我使用闭包编译器来优化require.js项目。
我正在使用" app.build.js"像这种方法的文件建议:
http://requirejs.org/docs/optimization.html#wholeproject
优化选项设置为" 关闭"我通过 Rhino 在Java中运行它:
java -classpath ./tools/lib/rhino/js.jar;./tools/lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main ./tools/require/r.js -o app.build.js dir=./temp optimize=closure
我在app.build.js中使用此配置封闭编译器:
closure: {
CompilerOptions: {},
CompilationLevel: 'SIMPLE_OPTIMIZATIONS',
loggingLevel: 'WARNING'
}
由于"使用严格的"修复了一些错误。规则,一切正常,我的项目在一个文件中缩小。 这是在Window 10上运行构建时。
但如果我在另一台机器上运行它(在Ubuntu 16.04下),有些方法是名称" on "通过闭包编译器。因此,在运行时,当我尝试使用"这个 on (" EVENT" ..." 它调用随机方法并使所有内容崩溃。
请注意" this.on"在父类中定义(使用require extends mechanism)。我尝试在当前类中定义它:闭包编译器创建另一个" on"无论如何,在它旁边的方法,它在运行时覆盖第一个:'(
我试图仅仅优化相应的文件:问题仍然存在,除了另一种方法命名为" on",另一种方法命名为" o0" " OA"等...
有没有人能够解决这样的问题,你知道如何避免它吗? 也许我不知道一些编译器选项?
我使用了闭包编译器v20180204(当前最后一个)
修改
似乎封闭编译器在这里不负责任。实际上,在SIMPLE模式下使用闭包补偿并不能重命名。并且在ADVANCED模式下单独使用闭包编译器(java -jar closure.jar ...)工作得很好。
所以问题是:在使用优化="关闭"时,Rhino是否应用了一些重命名规则?模式? 如果是这样的话,我们可以用任何方式编辑这些规则吗?