我已经尝试使用闭包编译器来优化和捆绑一个项目两个星期了。
这个项目最初是用TypeScript编写的。所以我想使用Tsickle来转化为JS,这样就可以很容易地输入闭包编译器Java应用程序。当我最终能够做到这一点时,我偶然发现了外部节点模块的问题。我尝试了所有我能够在Google群组、SO和闭包编译器repo中找到的解决方案。没有任何效果。
不想让这件事过去,我决定使用gulp。这是我的gulpfileiderjs,我试着让它尽可能简单。
const closureCompiler = require("google-closure-compiler").gulp();
gulp.task("js-compile", function () {
return gulp
.src("./src/**/*.js", { base: "./" })
.pipe(
closureCompiler(
{
compilation_level: "ADVANCED",
warning_level: "VERBOSE",
jscomp_off: "checkVars",
js_output_file: "output.min.js"
},
{
platform: ["native", "java", "javascript"]
}
)
)
.pipe(gulp.dest("./dist/js"));
});
有太多的输入文件让我放不进去。这次我用TSC代替Tsickle来传输。运行Gulp时我得到的错误是
[JSC_REDECLARED_VARIABLE_ERROR] Illegal redeclared variable: *nameofvariable*
我项目中的几乎每个文件都有这个,即使名称在同一个文件中不重复两次。
2条答案
按热度按时间k4aesqcs1#
您可以尝试tscc,它在幕后使用了tsickle,并为外部node_modules问题提供了一些解决方案。
wqsoz72f2#
尝试
--env CUSTOM
或--isolation_mode IIFE
。我在编译与Node
这样的浏览器接口冲突的代码时遇到了这个问题。