Подтвердить что ты не робот

Что вы используете для минимизации и сжатия библиотек JavaScript?

Что вы используете для минимизации и сжатия библиотек JavaScript?

4b9b3361

Ответ 1

Я использую YUI Compressor. Кажется, что работа выполнена хорошо!

Ответ 2

Я долгое время использовал YUI Compressor и не имел никаких проблем с ним, но недавно начал использовать Компилятор Google Closure и имел некоторый успех. Мои впечатления от этого до сих пор:

  • Он вообще превосходит компрессор YUI с точки зрения уменьшения размера файла. Небольшой объем в простом режиме и много в расширенном режиме.
  • Простой режим до сих пор был настолько надежным, как YUI Compressor. Ничто из того, что я его накормил, не показало никаких проблем.
  • Усовершенствованный режим "компиляции" отлично подходит для некоторых скриптов, но резкое уменьшение размера вашего script происходит за счет большого вмешательства в ваш код, который имеет достойный шанс его сломать. Существует способы решения некоторых из этих проблем, и понимание того, что это делает, может значительно помочь избежать проблем, но я вообще не использую этот режим.

Я перешел к использованию компилятора Google Closure в простом режиме "компиляции", потому что он немного превосходит компрессор YUI в целом. Я использовал его значительно меньше, чем у YUI Compressor, но из того, что я видел до сих пор, я бы рекомендовал его.

Еще один, который мне еще предстоит попробовать, но звучит многообещающе, - Mihai Bazon UglifyJS.

Ответ 3

У вас есть стадо возможностей здесь:

В моем личном опыте я рекомендую вам использовать Dojo SDK для создания пользовательской сборки, которую вы, в свою очередь, можете настроить для использования их обычного компилятора ShrinkSafe или Google Closure, которые они теперь поддерживают также.

Что касается сжатия, я думаю, что Google Closure - это тот, который дает мне наилучшие результаты до сих пор, однако я обычно доволен ShrinkSafe, и он немного старше и более надежным, тогда как Closure Compiler выглядит немного новым ребенком на блоке (например, ваши заинтересованные стороны, возможно, не слишком любят).

Некоторые люди клянутся только компрессором YUI. Я лично не могу не ручаться за это.

Теперь, если вы сомневаетесь в сжатии библиотек, а не только в вашем собственном JavaScript-коде, он, очевидно, становится все более привлекательным, так как вам понадобится большинство этих инструментов для экспорта символов, которые нельзя переименовать или удалить. Большинство достойных компрессоров будут удалять функции, которые, по их мнению, не используются - часто случай в библиотеке, если не связан с проектом, очевидно - и изменить имена, чтобы сделать их короче и использовать меньше символов, - также проблема, поскольку вы, очевидно, хотите, чтобы публика API не подделать.

Вы можете найти другие темы на эту тему, а также найти информацию в документации по поддержке инструментов. Вы также можете посмотреть JSBuilder2, своего рода кулон для Dojo инструмента сборки (так, используя ShrinkSafe или Closure Compiler) для ExtJS (с использованием компрессора YUI).

(Извините, будучи новым пользователем SO, я не могу добавить несколько ссылок, поэтому я не могу напрямую связать их с инструментами.)

EDIT: в отношении высказанных в некоторых ответах проблем, что сжатие может привести к ошибкам и что упрощает отладку, поскольку код не искажен: да, это актуальная проблема. Однако:

  • вы получите очень значительное улучшение в отношении пропускной способности, если вы используете minifier, даже с включенным сжатием gzip (и вы можете научиться использовать сжатие gzip, облегчая жизнь компрессора
  • вы должны просто попробовать свой код в режиме отладки и производства, чтобы убедиться, что поведение идентично. Я имею в виду, что это часть вашей работы...
  • некоторые из этих компрессоров уже давно существуют и не будут вводить ошибки в ваш код. Они действительно просто реорганизуют вещи и заменяют строки, действительно.
  • Некоторые компрессоры (например, система сборки Dojo) поставляются с параметрами, позволяющими создавать сжатый и несжатый выходные данные, чтобы затем можно было включить различные режимы для отладки и производства, используя, например, параметры запроса.

Ответ 4

Я вообще не свожу к минимуму JavaScript: сжатие gzip достаточно для меня и имеет дополнительное преимущество в том, что сообщения об ошибках по-прежнему будут полезны.

Ответ 5

Я тоже использую компрессор YUI. У меня есть такая задача ant, которая используется в моих проектах:

<!--
YUI Compressor tasks 
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
           value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>

<target name="js.compress">
    <!-- Create min directory under js direcrtory if it doesnt exist -->
    <mkdir dir="${js-directory}/min" />

    <apply verbose="true" executable="java" parallel="false" failonerror="true">
        <fileset dir="${js-directory}" includes="*.js"/>
        <arg line="-jar"/>
        <arg path="${yuicompressor.jar}"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
        <targetfile/>
    </apply>
</target>

Ответ 6

UglifyJS - новый.

UglifyJS сжимается лучше, чем YUI Компрессор и примерно на одном уровне с компилятор Google Closure. Для пример, сжатая версия jQuery из Google Closure Компилятор меньше на 403 байта чем версия, выпущенная UglifyJS - впечатляет! UglifyJS также является самым быстрым для запуска длинным выстрелом, избиением Закрытие более 6 секунд!

Кроме того, код, созданный UglifyJS безопаснее, чем код, который Генерируется замыкание. Например, Закрытие не знает, как бороться с eval или с {} - он просто регистрирует ошибку и продолжает переименовывать переменные так или иначе. Это, очевидно, приводит к сломанный код. UglifyJS не имеет эта проблема.

Более подробную информацию можно найти здесь: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js

Ответ 7

Пакер Dan Edward достигает довольно хороших коэффициентов сжатия. Он имеет реализацию командной строки, которая позволяет использовать его в процессе непрерывной интеграции.

Ответ 8

Google closure tools

Вы можете сопоставить мини-версию с обычным исходным кодом для отладки в Firebug с их надстройкой.

Ответ 9

Я уже пробовал компрессор YUI, но он дает мне сообщение об ошибке.

Я предлагаю использовать JSMIN для минимизации вашего javascript:

http://www.crockford.com/javascript/jsmin.html

Ответ 10

Вот решение от Microsoft, которое вы можете интегрировать в Visual Studio, чтобы автоматически минимизировать файлы при создании проекта.

Установить:

Загрузите msi из: http://aspnet.codeplex.com/releases/view/40584

Возможно, вам придется перезагрузить компьютер после его завершения.

Использовать:

Отредактируйте файл .csproj и включите в конец файла следующее (но перед тегом </Project>):

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />

<Target Name="AfterBuild">
    <ItemGroup>
        <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
        <CSS Include="**\*.css" Exclude="**\*.min.css" />
    </ItemGroup>
    <AjaxMin 
    JsSourceFiles="@(JS)"
    JsSourceExtensionPattern="\.js$"
    JsTargetExtension=".min.js"
    CssSourceFiles="@(CSS)"
    CssSourceExtensionPattern="\.css$"
    CssTargetExtension=".min.css"/>
</Target>

Теперь, когда вы создаете свой проект, все файлы CSS и js, которые не заканчиваются на .min.js,.min.css, будут уменьшены (см. атрибут "Исключить", чтобы исключить возможность исключения других файлов).

Ответ 11

http://code.google.com/p/jsmin-php/

Хороший старый Дуг Крокфорд:-) Красота этого заключается в том, что с контролем кеша вы можете получить автоматическое сжатие только когда это потребуется. Или в одном из моих проектов я просто выводя сжатые /gzipped файлы и удаляю их, когда я делаю изменения. Для среды разработки я просто не называю minification script.

Ответ 12

Я использую простой (3-4 строки) обертку script вокруг JavaScript:: Minifier:: XS.

Ответ 14

Я использую perl JavaScript:: Minifier. Он работает очень хорошо, и вы можете, например, замените некоторые фразы, используя perl.

Ответ 16

https://jawr.dev.java.net/ отлично подходит для минимизации и управления версиями

Ответ 17

Есть очень хороший онлайн-компрессор:

http://javascriptcompressor.com/

Вы также можете сжимать переменные, если хотите еще более усложнить.

Надеюсь, что это поможет