Какой лучший компрессор 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 лучше справляется с первоначальным сжатием, но если вы собираетесь сжать файлы перед отправкой по сети (что и следует делать), YUI Compressor получает наименьший конечный размер.
Тесты были выполнены на коде jQuery.
@ daniel james упоминает в комментариях compressrater, который показывает, что Пакер возглавляет диаграмму в лучшем сжатии, так что я думаю, ymmv
\uxxxx
по умолчанию преобразует не-ascii символы в строках в литералы .. используйте например --charset UTF-8
(если вы уверены, что браузер как-то об этом узнал)
Компрессор YUI - это путь. Он имеет высокую степень сжатия, хорошо протестирован и используется на многих топовых сайтах, и, лично я рекомендую.
Я использовал его для своих проектов без единой ошибки JavaScript или сбоя. И у него есть хорошая документация.
Я никогда не использовал его возможности сжатия CSS, но они также существуют. Сжатие CSS работает так же хорошо.
Примечание. Несмотря на то, что / packer / в Dean Edwards обеспечивает более высокую степень сжатия, чем YUI Compressor, при его использовании я столкнулся с несколькими ошибками JavaScript.
npm install packer
. (= D
Я использую ShrinkSafe из проекта Dojo - он является исключительным, поскольку он фактически использует интерпретатор JavaScript ( Rhino ) для поиска символов в коде, понимания их области действия и т. Д., Что помогает гарантировать, что код будет работать, когда он выйдет другой конец, в отличие от многих инструментов сжатия, которые используют регулярные выражения, чтобы сделать то же самое (что не так надежно).
На самом деле у меня есть задача MSBuild в проекте веб-развертывания в моем текущем решении Visual Studio, которое запускает сценарий, который, в свою очередь, запускает все файлы JS решения через ShrinkSafe перед развертыванием, и это работает довольно хорошо.
РЕДАКТИРОВАТЬ: Между прочим, «лучший» открыт для обсуждения, так как критерии для «лучших» будет варьироваться в зависимости от потребностей проекта. Лично я считаю ShrinkSafe хорошим балансом; для некоторых людей, которые считают наименьший размер == лучшим, этого будет недостаточно.
РЕДАКТИРОВАТЬ: Стоит отметить, что компрессор YUI также использует Rhino.
Если вы используете Packer, просто перейдите к опции 'shrink variable' и скопируйте полученный код. Опция base62 доступна только в том случае, если ваш сервер не может отправлять сжатые файлы. Упаковщик с 'shrink vars' обеспечивает лучшее сжатие YUI, но может привести к ошибкам, если вы пропустили точку с запятой.
base62 - это, по сути, gzip для бедного человека, поэтому сжатый код base62-ed дает вам файлы большего размера, чем сжатый код shrink-var-ed.
В поисках серебряной пули нашел этот вопрос. Для Ruby on Rails http://github.com/sstephenson/sprockets
Вот исходный код HttpHandler, который делает это, может быть, это поможет вам
bananascript.com раньше давал мне лучшие результаты.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress представляет собой набор из двух приложений (kjscompress a csscompress) для удаления незначительных пробелов и комментариев из файлов, содержащих JavaScript и CSS. Оба являются приложениями командной строки для операционной системы GNU / Linux.