Лучший компрессор JavaScript

Каков лучший компрессор JavaScript? Я ищу инструмент, который:

  • прост в использовании
  • имеет высокую степень сжатия
  • Производите надежные конечные результаты (не испортить код)

Ответ 1

Недавно я выпустил UglifyJS, компрессор JavaScript, написанный на JavaScript (работает на NodeJS Node.js, но его можно легко модифицировать для запуска на любом движке JavaScript, так как он не нуждается в внутренних функциях Node.js). Это намного быстрее, чем YUI Compressor и Google Closure, он сжимает лучше, чем YUI во всех сценариях, на которых я тестировал, и это безопаснее, чем Closure (знает, что нужно иметь дело с "eval" или "with" ).

Помимо удаления пробелов, UglifyJS также выполняет следующие действия:

  • изменяет имена локальных переменных (обычно на отдельные символы)
  • объединяет последовательные объявления var
  • избегает вставки любых ненужных скобок, парсеров и точек с запятой
  • оптимизирует IFs (удаляет "else", когда обнаруживает, что он не нужен, преобразует IFs в операторы &, || или? /: когда возможно и т.д.).
  • преобразует foo["bar"] в foo.bar, где возможно
  • удаляет цитаты из ключей в объектных литералах, где это возможно
  • разрешает простые выражения, когда это приводит к уменьшению кода (1 + 3 * 4 == > 13)

PS: О, он также может "украсить".; -)

Ответ 2

Пересмотр этого вопроса через несколько лет, UglifyJS, кажется лучшим вариантом на данный момент.

Как указано ниже, он запускается на платформе NodeJS, но его можно легко модифицировать для запуска на любом движке JavaScript.

--- Старый ответ ниже ---

Google выпустил Closure Compiler, который, как представляется, генерирует наименьшие файлы, если смотреть здесь и здесь

До этого были следующие варианты

В принципе Packer делает лучшую работу при первоначальном сжатии, но если вы собираетесь gzip файлы перед отправкой на провод ( что вы должны делать) YUI Compressor получает наименьший конечный размер.

Тесты выполнялись в коде jQuery btw.

  • Оригинальная библиотека jQuery 62,885 байт, 19 758 байт после gzip
  • jQuery minified с JSMin 36,391 байт, 11 541 байт после gzip
  • jQuery, сокращенный с пакетом 21 557 байт, 11,119 байт после gzip
  • jQuery, сокращенный с помощью компрессора YUI 31,822 байт, 10 818 байт после gzip

@daniel james упоминает в комментарии compressorrater, который показывает Packer ведущий график в наилучшем сжатии, поэтому я думаю, ymmv

Ответ 3

YUI Compressor - это путь. Он обладает большой степенью сжатия, хорошо протестирован и используется среди многих лучших сайтов, и, ну, лично мне рекомендовал.

Я использовал его для своих проектов без единой ошибки JavaScript или икоты. И у него хорошая документация.

Я никогда не использовал свои возможности сжатия CSS, но они также существуют. CSS-сжатие работает так же хорошо.

Примечание. Хотя Dean Edwards/packer/достигает лучшей скорости сжатия, чем YUI Compressor, я столкнулся с несколькими ошибками JavaScript при использовании он.

Ответ 4

Я использую ShrinkSafe из проекта Dojo - он исключительный, поскольку на самом деле он использует интерпретатор JavaScript (Rhino), чтобы иметь дело с поиском символов в коде и пониманием их объема и т.д., что помогает гарантировать, что код будет работать, когда он выходит на другой конец, в отличие от множества инструментов сжатия, которые используют регулярное выражение для выполнения того же (что не так надежно).

У меня действительно есть задача MSBuild в проекте веб-развертывания в моем текущем решении Visual Studio, которое запускает script, который, в свою очередь, запускается все файлы JS решения через ShrinkSafe перед тем, как мы развернем его, и он работает достаточно хорошо.

EDIT:. Кстати, "лучшее" открыто для обсуждения, поскольку критерии "наилучшего" будут варьироваться в зависимости от потребностей проекта. Лично я считаю, что ShrinkSafe - хороший баланс; для некоторых людей, которые считают наименьший размер == лучшим, этого будет недостаточно.

EDIT: Стоит отметить, что компрессор YUI также использует Rhino.

Ответ 5

Попробуйте JSMin, получите С#, Java, C и другие порты и также легко доступны.

Ответ 6

Если вы используете Packer, просто перейдите в параметр "сжимаемые переменные" и gzip полученный код. Параметр base62 предназначен только для того, если ваш сервер не может отправлять gzip файлы. Упаковщик с "shrink vars" обеспечивает лучшее сжатие YUI, но может вводить ошибки, если вы где-то пропустили точку с запятой.

base62 - это, в основном, плохой человек gzip, поэтому gzipping base62-ed code дает вам больше файлов, чем gzipping сокращенно-измененный код.

Ответ 7

JSMin - это еще один.

Ответ 10

Здесь - компрессор YUI script (Byuic), который находит все js и css по пути и сжимает/(необязательно) обфускации их. Приятно интегрироваться в процесс сборки.

Ответ 11

bananascript.com используется для получения наилучших результатов.

Ответ 12

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress/csskompress - это набор из двух приложений (kjscompress a csscompress), чтобы удалить несущественные пробелы и комментарии из файлов содержащий JavaScript и CSS. И то и другое являются приложениями из командной строки для GNU/Linux.

Ответ 13

Js Crush - хороший компрессор для использования после того, как вы его минимизировали.

Ответ 14

Я использую jscompressor.com в качестве хром-приложения.