我正在将项目从jQuery迁移到Closure。我有一些代码只有半迁移,我想编译。未编译的源工作正常。我想知道使用SIMPLE_OPTIMIZATIONS编译它的编译命令。
基于jQuery的原始代码的编译命令是:
java -jar ~/closure/closure-compiler/build/compiler.jar \
--js ~/Sites/mysite/js/bc_school6_2.js \
--js ~/Sites/js_common/bc.job_school.js \
--js ~/Sites/js_common/bc_help.js \
--js ~/Sites/js_common/validation.js \
--js ~/Sites/js_common/md5.js \
--js ~/Sites/js_common/chosen.jquery.js \
--js ~/Sites/js_common/jquery.reveal.js \
--js ~/Sites/js_common/printArea.js
> ~/Sites/mysite/js-minified/bc_school6_2s.js
完全迁移源的SIMPLE_OPTIMIZATIONS编译命令就是这样(尽管完全迁移的代码将使用ADVANCED_OPTIMIZATIONS):
closure-library/closure/bin/build/closurebuilder.py \
--root=closure-library/ \
--root=closure-templates/javascript/ \
--root=bc/ \
--namespace="bc.bc_school6_2" \
--output_mode=compiled \
--compiler_jar=closure-compiler/build/compiler.jar \
--compiler_flags="--compilation_level=SIMPLE_OPTIMIZATIONS" \
> ~/Sites/mysite/js-minified/bc_school6_2s.js
目前,命名空间没有在源代码中正确设置,因此后一个编译过程无法正常工作。
是否可以使用Google Closure库编译源代码,然后从js_common
文件夹中添加所有jQuery文件?我可以在一个编译命令中执行它,或者如果没有,我可以编译我的goog
代码,然后合并jQuery材料吗?
感谢。
答案 0 :(得分:2)
您可以编译goog
代码,然后将jQuery代码作为外部代码包含在内。此方法还允许您在ADVANCED MODE
中编译代码,并且仍然可以在其原始格式中使用jQuery
。
为此,您必须使用包含所有extern声明的.js文件。然后使用--externs
标志告诉闭包编译器在哪里寻找外部。请参阅以下示例用法:
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS \
--js makeallnotes.js --externs extern1.js --externs extern2.js
要了解有关如何声明外部的更多信息,请参阅此tutorial。基本上,它们用于告诉闭包编译器您正在使用的外部API或库。
Google Closure源代码中实际包含jQuery
个extern文件。找到您使用on this page的jQuery
版本。
另外,我会考虑使用Plovr构建您的Closure Project。它允许您使用配置文件来设置所有构建参数,并且如果您经常构建代码,将节省大量时间。