【发布时间】:2012-05-10 20:50:39
【问题描述】:
我想在我们正在使用的 javascript 源代码上使用 google 闭包编译器。 在开发模式下,我们倾向于将功能分解为大量文件,但生产环境希望将它们组合成模块。
当调用编译器时,我可以给它一个要包含的文件列表以供编译,但它的输出显示编译器没有保存文件列表的顺序。
我搜索了一下,发现可以使用goog.provide/good.require来控制不同js文件之间的依赖关系。 问题在于它向我的 js 添加了我不需要或不想要的代码,例如:
goog.provide("mainFile")
将添加这个:
var mainFile = {};
到编译的js文件,我不想要的东西。 我们根本没有使用 google 闭包库,我只想使用编译器。
有没有办法告诉编译器文件的顺序,而不包括更多我不需要的“闭包库”功能? 我当然可以创建自己的工具,它首先会获取所有文件,将它们组合成一个,然后作为编译器的输入,但如果它可以由编译器本身完成,我更愿意取消它。
编辑
我们的目标是能够像这个线程中的答案一样生成模块:Using the --module option in Closure Compiler to create multiple output files
因此,我想添加控制哪些文件进入哪个模块的能力,同时还可以控制它们的顺序。 目前我不使用通配符,但我计划在未来使用通配符(如果可能的话)。
只需“cat file1.js file2.js > combined.js && compile...”就可以了,但在我们的例子中它有点复杂,我们必须编写一个基于一些逻辑。 如果我们能以某种方式提前告诉编译器文件的顺序,它可能只是节省了实现这样一个程序的时间。
谢谢。
【问题讨论】:
-
cat file1 file2 > temp && compile -js temp怎么样? -
调用编译器时是使用通配符(*.js)还是按顺序声明每个文件?
-
我编辑了我的问题,因为它太大而无法发表评论。谢谢。
-
控制顺序是指编译器处理给定模块中每个源文件的顺序吗?它应该是您列出它们的顺序。
-
如果将相同的源文件编译成一个巨大的文件有效,那么您应该在code.google.com/p/closure-compiler/issues/list 发布问题。无论哪种方式,如果您能提供可重现的样本,都会有所帮助。
标签: javascript minify google-closure-compiler