使用Closure Compiler中的--module选项创建多个输出文件

24

我正在创建一个相当大的JavaScript库,使用Closure Compiler进行压缩以及类型检查和警告系统。

但是我想创建多个输出文件,因为文件是异步加载的(有些文件只在需要时加载)。

在查看源代码时,我发现了--module标志以及一些相关标志。源代码中有关该选项的说明如下:

javascript模块规范。格式为<name>:<num-js-files>[:[<dep>,...][:]]]。模块名称必须唯一。每个依赖项都是此模块依赖的模块的名称。模块必须按依赖项顺序列出,并且js源文件必须按相应顺序列出。--module标志与--js标志的位置无关

...这就是我能找到的全部内容。我很想了解如何使用此选项,是否有人在这方面有经验?或者,如果有其他方法可以创建多个输出文件,我很愿意听取建议。


嗨,我想知道你最终解决了这个问题没有。我也遇到了类似的困境。 - Alexander Tsepkov
1
使用Python构建了一个简单的解决方案,代码存放在这里:https://github.com/fortes/js-project-template - Fortes
1个回答

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

这个例子将为您编译出两个文件:
  • 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”。一位编辑建议进行更改;对于更新版本,我保留了更改,对于旧版本,我保留了旧的参数名称,因为总会有人使用旧版本的构建工具,这种小的破坏性变化可能真的会让你困扰。


抱歉打扰这个旧帖子,但对我来说仍然非常有价值。然而,我似乎无法使用它来构建多个根模块,例如: --module root-a --js roots/a.js --module root-b --js roots/b.js 有什么想法吗? - Gernot Raudner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接