Использование параметра --module в компиляторе Closure для создания нескольких файлов вывода

Я создаю довольно большую библиотеку JavaScript, используя Closure Compiler как для прекрасного сжатия, так и для систем проверки типов и предупреждений.

Однако я хочу создать несколько выходных файлов, потому что файлы загружаются асинхронно (а некоторые файлы загружаются только по запросу).

Покопавшись в исходном коде, я нашел флаг --module, а также некоторые связанные с ним флаги. В исходном коде об этой опции сказано следующее:

Спецификация модуля javascript. Формат - <name>:<num-js-files>[:[<dep>,...][:]]]. Имена модулей должны быть уникальными. Каждый dep - это имя модуля, от которого зависит этот модуль. Модули должны быть перечислены в порядке зависимости, а исходные файлы js должны быть перечислены в соответствующем порядке. Где --module флага встречаются по отношению к --js флагам, неважно

... и это все, что я могу найти. Я хотел бы узнать больше о том, как использовать эту опцию, есть ли у кого-нибудь здесь опыт? В качестве альтернативы, если есть другой способ создать несколько выходных файлов, я все слышу.


person Fortes    schedule 08.07.2010    source источник
comment
Привет, мне было интересно, догадались ли вы когда-нибудь об этом. Я застрял с аналогичной проблемой.   -  person Alexander Tsepkov    schedule 17.06.2011
comment
Здесь построено хакерское решение с использованием Python: github.com/fortes/js-project-template   -  person Fortes    schedule 25.07.2011


Ответы (1)


java -jar compiler.jar ^
--chunk jq:1: --js jquery-1.6.2.js ^
--chunk t:1:jq: --js test.js ^
--compilation_level ADVANCED_OPTIMIZATIONS

Этот пример скомпилирует для вас 2 файла:

  • jq.js
  • t.js

jq.js будет jquery 1.6.2 с расширенной минимизацией, а t.js будет правильно использовать эту минимизированную версию JQuery.

Хотелось бы, чтобы у меня был JavaFiddle, на котором я мог бы опубликовать это, чтобы продемонстрировать это.


Старая версия

Этот исходный ответ был для более старой версии Closure Compiler. Я оставил его нетронутым ниже на тот случай, если вы находитесь в среде, в которой требуется сохранить старую версию.

Как работать с несколькими файлами вывода, также известными как модули: http://groups.google.com/group/closure-compiler-discuss/browse_thread/thread/ec7f6809b19b019e/25a94f3994173840

Копирование / вставка:

java -jar Build\Tools\compiler.jar ^ 
--compilation_level=ADVANCED_OPTIMIZATIONS ^ 
--externs Build\jQuery.externs.js ^ 
--js Build\Output\Compiling.js ^ 
--js Script/Themes.lang.js ^ 
--js Script/Themes.js ^ 
--module Core:3 ^ 
--js UI/ThemeChooser/ThemeChooser_en.htm.js ^ 
--js UI/ThemeChooser/ThemeChooser.js ^ 
--module UI_ThemeChooser:2:Core ^ 
--js UI/VerticalTabs/VerticalTabs_en.htm.js ^ 
--js UI/VerticalTabs/VerticalTabs.js ^ 
--module UI_VerticalTabs:2:Core ^ 
--js Pager/Pager_en.htm.js ^ 
--js Pager/jquery.Pager.js ^ 
--js Pager/Pager.js ^ 
--module Pager:3:VerticalTabs ^ 
--module_output_path_prefix .\Compiled\ 

И, как он отмечает, --js_output_file не имеет значения при выводе модулей.

Примечание. Очевидно, компилятор Closure изменил аргумент «--module» на «--chunk». Редактор предложил изменение; для более новой версии я сохранил изменения, для более старой версии я сохранил старое имя аргумента, так как всегда есть люди, использующие старые версии инструментов сборки, и такие небольшие критические изменения могут действительно испортить вам жизнь.

person Chris Moschini    schedule 19.10.2011
comment
извините, что разбудил эту старую ветку, но для меня это все еще очень ценно. однако я не могу использовать это для создания нескольких корневых модулей, например. вот так: --module root-a --js root / a.js --module root-b --js root-a / b.js какие-нибудь идеи? - person Gernot Raudner; 22.03.2018