0

我正在使用闭包编译器来优化 require.js 项目。

我正在使用这种方法建议的“app.build.js”文件:

http://requirejs.org/docs/optimization.html#wholeproject

优化选项设置为“ closure ”,我通过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 ”。因此,在运行时,当我尝试使用 "this.on ("EVENT"..." 注册一个侦听器时,会调用一个随机方法并使一切崩溃。

请注意,“this.on”是在父类中定义的(使用 require extends 机制)。我尝试在当前类中定义它:闭包编译器无论如何都会在它旁边创建另一个“on”方法,它会在运行时覆盖第一个:'(

我尝试仅优化相应的文件:问题仍然存在,除了另一种方法名为“on”,其他方法名为“o0”“oa”等...

有没有人遇到过这样的问题,你知道如何避免吗?也许一些我不知道的编译器选项?

我正在使用closure-compiler v20180204(当前最后一个)

编辑:

似乎闭包编译器在这里不负责。事实上,在 SIMPLE 模式下使用闭包组合不会重命名任何东西。并在 ADVANCED 模式下单独使用闭包编译器(java -jarclosure.jar ...)工作得很好。

所以问题是:Rhino 在使用 optimization="closure" 模式时是否应用了一些重命名规则?如果是这样,我们可以以任何方式编辑这些规则吗?

4

0 回答 0