我知道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
但它不起作用。文件已损坏。你能救我吗?
答案 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