如何将几个文件编译为相同的文件

时间:2013-03-18 06:21:56

标签: google-closure-compiler google-closure

我知道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

但它不起作用。文件已损坏。你能救我吗?

2 个答案:

答案 0 :(得分: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

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


更一般地说,请Compiler Manual。所有这些,尤其是inconsistent property names上的部分。如果没有通知编译器源文件如何与彼此相关,则关闭不可能一致地重命名它们的内容。

如果您打算创建预编译的.dll样式共享对象,则由于手册中记录的名称碎片问题,闭包不支持此操作。此外,没有必要预编译,编译速度相当快。改为分享您的源文件。

请为您自己创建一个构建目录,并从源代码中将编译器输出远离。代码永远不会在第一遍完美构建。即使所讨论的代码是一个简单的数学实用程序,您也需要构建和测试多次。

总结:

(1)阅读entire manual(2)撰写Externs或尝试goog.require(3) 预编辑被高估,(4)永远不会覆盖源文件,(5)保持频繁备份。

答案 1 :(得分:-1)

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

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js