Каков лучший компрессор JavaScript? Я ищу инструмент, который:
- прост в использовании
- имеет высокую степень сжатия
- Производите надежные конечные результаты (не испортить код)
Каков лучший компрессор JavaScript? Я ищу инструмент, который:
Недавно я выпустил UglifyJS, компрессор JavaScript, написанный на JavaScript (работает на NodeJS Node.js, но его можно легко модифицировать для запуска на любом движке JavaScript, так как он не нуждается в внутренних функциях Node.js
). Это намного быстрее, чем YUI Compressor и Google Closure, он сжимает лучше, чем YUI во всех сценариях, на которых я тестировал, и это безопаснее, чем Closure (знает, что нужно иметь дело с "eval" или "with" ).
Помимо удаления пробелов, UglifyJS также выполняет следующие действия:
foo["bar"]
в foo.bar
, где возможноPS: О, он также может "украсить".; -)
Пересмотр этого вопроса через несколько лет, UglifyJS, кажется лучшим вариантом на данный момент.
Как указано ниже, он запускается на платформе NodeJS, но его можно легко модифицировать для запуска на любом движке JavaScript.
--- Старый ответ ниже ---
Google выпустил Closure Compiler, который, как представляется, генерирует наименьшие файлы, если смотреть здесь и здесь
До этого были следующие варианты
В принципе Packer делает лучшую работу при первоначальном сжатии, но если вы собираетесь gzip файлы перед отправкой на провод ( что вы должны делать) YUI Compressor получает наименьший конечный размер.
Тесты выполнялись в коде jQuery btw.
@daniel james упоминает в комментарии compressorrater, который показывает Packer ведущий график в наилучшем сжатии, поэтому я думаю, ymmv
YUI Compressor - это путь. Он обладает большой степенью сжатия, хорошо протестирован и используется среди многих лучших сайтов, и, ну, лично мне рекомендовал.
Я использовал его для своих проектов без единой ошибки JavaScript или икоты. И у него хорошая документация.
Я никогда не использовал свои возможности сжатия CSS, но они также существуют. CSS-сжатие работает так же хорошо.
Примечание. Хотя Dean Edwards/packer/достигает лучшей скорости сжатия, чем YUI Compressor, я столкнулся с несколькими ошибками JavaScript при использовании он.
Я использую ShrinkSafe из проекта Dojo - он исключительный, поскольку на самом деле он использует интерпретатор JavaScript (Rhino), чтобы иметь дело с поиском символов в коде и пониманием их объема и т.д., что помогает гарантировать, что код будет работать, когда он выходит на другой конец, в отличие от множества инструментов сжатия, которые используют регулярное выражение для выполнения того же (что не так надежно).
У меня действительно есть задача MSBuild в проекте веб-развертывания в моем текущем решении Visual Studio, которое запускает script, который, в свою очередь, запускается все файлы JS решения через ShrinkSafe перед тем, как мы развернем его, и он работает достаточно хорошо.
EDIT:. Кстати, "лучшее" открыто для обсуждения, поскольку критерии "наилучшего" будут варьироваться в зависимости от потребностей проекта. Лично я считаю, что ShrinkSafe - хороший баланс; для некоторых людей, которые считают наименьший размер == лучшим, этого будет недостаточно.
EDIT: Стоит отметить, что компрессор YUI также использует Rhino.
Попробуйте JSMin, получите С#, Java, C и другие порты и также легко доступны.
Если вы используете Packer, просто перейдите в параметр "сжимаемые переменные" и gzip полученный код. Параметр base62 предназначен только для того, если ваш сервер не может отправлять gzip файлы. Упаковщик с "shrink vars" обеспечивает лучшее сжатие YUI, но может вводить ошибки, если вы где-то пропустили точку с запятой.
base62 - это, в основном, плохой человек gzip, поэтому gzipping base62-ed code дает вам больше файлов, чем gzipping сокращенно-измененный код.
JSMin - это еще один.
В поисках серебряной пули, нашел это вопрос. Для Ruby on Rails http://github.com/sstephenson/sprockets
Здесь исходный код HttpHandler, который делает это, возможно, это поможет вам
Здесь - компрессор YUI script (Byuic), который находит все js и css по пути и сжимает/(необязательно) обфускации их. Приятно интегрироваться в процесс сборки.
bananascript.com используется для получения наилучших результатов.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress/csskompress - это набор из двух приложений (kjscompress a csscompress), чтобы удалить несущественные пробелы и комментарии из файлов содержащий JavaScript и CSS. И то и другое являются приложениями из командной строки для GNU/Linux.
Js Crush - хороший компрессор для использования после того, как вы его минимизировали.
Я использую jscompressor.com в качестве хром-приложения.