1

我知道 Google Closure Compiler 允许我将多个文件编译成一个文件,如下所示:

java -jar compiler.jar --js assets/js/file1.js 
   assets/js/file2.js --js_output_file  assets/js/file.min.js

但我需要编译文件并将其放在同一个文件夹中的相同名称,如下所示:

java -jar compiler.jar --js assets/js/file1.js 
    --js_output_file  assets/js/file1.js

java -jar compiler.jar --js assets/js/file2.js 
    --js_output_file  assets/js/file2.js

但它不起作用。文件被损坏。你能帮助我吗?

4

2 回答 2

0

首先也是最重要的是,您的编译脚本设置为覆盖您的源文件。你真的,绝对肯定这是你打算做的吗?编译是一种有损转换:它会破坏注释(包括类型注释)、重命名所有内容、积极重构、到处内联,并且通常会将您的辛勤工作变成无法维护的混乱。

java -jar compiler.jar --js assets/js/file1.js 
    --js_output_file  assets/js/file1.js

java -jar compiler.jar --js assets/js/file2.js 
    --js_output_file  assets/js/file2.js

如果我相信您的话并且您实际上已经完成了上述操作,那么不幸的是,这将解释您的“我的文件现在已损坏”的问题。我希望你有一个备份。


更一般地说,了解编译器手册。所有这些,尤其是关于inconsistent property names. 如果编译器不知道你的源文件是如何相互关联的,那么闭包就不可能一致地重命名它们的内容。

如果您打算创建预编译.dll样式的共享对象,则关闭不支持此操作,因为手册中记录了名称碎片问题。此外,无需预编译,编译速度相当快。而是共享您的源文件。

拜托,请让自己成为一个构建目录,并将编译器输出源代码中传输出去。代码永远不会在第一遍就完美构建。即使有问题的代码是一个简单的数学实用程序,您也需要多次构建和测试。

总之:

(1)阅读整本手册(2)编写Externs或尝试goog.require(3)预编译被高估,(4)永远不会覆盖源文件,(5)经常备份。

于 2013-09-16T20:20:59.237 回答
-1

只需在命令行中使用多个“--js”参数:

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js
于 2013-04-05T21:51:12.813 回答