我发现CompilerOption中的某些选项不会导出到命令行。
例如,Closure Compiler的Java API CompilerOption中提供了alias all strings
,但我不知道如何在命令行中设置它。
我知道我可以创建一个新的java类,如:
Compiler c = new Compiler();
ComppilerOptions opt = new ComppilerOptions();
opt.setAliasAllString(true);
c.compile(.....);
但是我必须自己处理命令行args。
有什么简单的想法吗?
============================
为了尝试alias all string
选项,我编写了一个基于compiler.jar的简单命令行应用程序。
但是我发现,打开alias all string
时得到的结果并不是我所期望的。
例如:
a["prototype"]["say"]=function(){
var a="something string";
}
鉴于上述代码,something string
将被替换为如下变量:
var xx="something string";
....
var a=xx;
....
这很好,但字符串“说”怎么样?闭包编译器如何知道这应该是别名(替换它使用变量)或导出(导出此方法)?
这是现在已编译的代码:
a.prototype.say=function(){....}
似乎它将其导出。
虽然我想要这个:
var a="prototype",b="say",c="something string";
xx[a][b]=function(){.....}
实际上,这是类似google_map的编译。
这可能吗?
答案 0 :(得分:1)
如果您只想玩某些东西,修改http://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/javascript/jscomp/CompilationLevel.java?r=706通常很容易。
答案 1 :(得分:1)
并非所有选项都可从命令行获得 - 这包括aliasAllStrings。对于其中一些,您有以下选择:
获得与Maps API相同级别的压缩和混淆需要专门为编译器编写的代码。正确编写后,您将看到属性和命名空间崩溃,原型别名以及其他所有内容。有关优化该方式的代码样式的示例,请查看Closure Library。
答案 2 :(得分:0)
Plovr(一个Closure构建工具)提供了一个名为experimental-compiler-options
的选项,其记录如下:
Closure Compiler包含许多仅在Java中以编程方式提供的选项。其中许多选项都是实验性的或未最终确定的,因此它们可能不是API的永久部分。然而,其中许多对你今天都有用,所以plovr试图揭示这些实验 - 编译 - 选项选项。在引擎盖下,它使用Java中的反射,所以它相当hacky,但实际上, 是一种在不编写Java代码的情况下试验Closure Compiler选项的便捷方式。