带有ADVANCED_OPTIMIZATIONS的Google闭包编译器给我空文件

时间:2018-11-26 09:10:55

标签: google-closure-compiler

我正在使用的命令是

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脚本,结果也一样。任何帮助,我们将不胜感激。

2 个答案:

答案 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