我正在使用的命令是
java -jar closure-compiler-v20181028.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file=out.js input.js
我的input.js仅包含
function base() {
var b='xyz';
if (b.tagName && 0 == b.tagName.search(this.TAGS_)) {
if (b.hasAttribute("href") && void 0 !== self.angular) {
var f = b.getAttribute("href");
if (f.indexOf("{{") >= 0 && f.indexOf("}}") > 0 && !b.hasAttribute("ng-href"))
return b.setAttribute("ng-href", f), void b.removeAttribute("href");
}
for (var a = 0; a < this.URL_ATTRIBUTES_.length; ++a)
if (b.hasAttribute(this.URL_ATTRIBUTES_[a]))
return this.updateAttributes_(b, a);
}
}
我尝试了gradle脚本,结果也一样。任何帮助,我们将不胜感激。
答案 0 :(得分:0)
如果您不致电base()
,则由于无法访问该代码,因此将其删除。
您要么要调用它,要么添加@export
表示法来告诉Closure,其他代码需要它。
或者,如果某事正在调用base()
,则它可能未正确包含在您的版本中。
答案 1 :(得分:0)
从文档中:
“ ...使用ADVANCED_OPTIMIZATIONS编译的代码可能无法与未编译的代码一起使用,除非采取特殊措施以确保互操作性。如果不标记代码中引用的外部函数和属性,Closure Compiler会在代码中不适当地重命名引用,导致代码中的名称与外部代码中的名称不匹配。”
此处的“标记”表示“导出”。有关更多信息,请参见此文档的不同编译级别:
https://developers.google.com/closure/compiler/docs/compilation_levels
此博客文章:
http://closuretools.blogspot.com/2012/09/which-compilation-level-is-right-for-me.html
有关此处的出口文件:
https://developers.google.com/closure/compiler/docs/api-tutorial3