【问题标题】:Avoid compiler errors in externs (closure compiler)避免外部编译器中的编译器错误(闭包编译器)
【发布时间】:2012-10-30 23:11:00
【问题描述】:

Closure Compiler 可以配置为将选定类型的警告升级为错误。当开发团队想要让他们的 JS 达到更严格的标准时,这很有帮助。但是,我遇到了一个问题,我们依赖的许多库(例如 RequireJS)并不那么严格。所以当我这样做时:

java -jar compiler.jar --js input.js
                       --compilation_level ADVANCED_COMPILATION 
                       --externs require.js
                       --jscomp_error=missingProperties

由于 RequireJS 中缺少属性错误,构建失败。当然,没有错误升级,构建成功。

在 Require 的情况下,公共符号非常少,因此创建一个虚假的 externs 文件而不是使用真实的东西是微不足道的。但这并不能扩展——我们使用了无数其他库,这些库都需要维护单独的外部合同。

我看到了两种可能的解决方案,但没有足够的信息来执行任何一种。 (1) 让 Closure 回退到外部人员的正常警告配置;或 (2) 使用能够可靠/一致地提取给定库的外部合同的工具。或者我没有想到的任何其他解决方案。

【问题讨论】:

    标签: google-closure-compiler


    【解决方案1】:

    您想创建外部文件,而不是使用原始源。使用原始源代码仅适用于非常简单的库。我知道有几个工具可以提取外部变量,但它们不提供类型信息。一般来说,你想向库维护者询问一些东西,然后询问 Closure Compiler 邮件列表,然后自己构建一些东西(并分享它)。

    【讨论】:

    • 这是我害怕的答案。大多数库不维护外部文件,我们在内部这样做是不切实际的。但感谢您验证在此问题上的“正确”立场。
    • 外部文件是否可用于库是决定使用哪个编译级别的主要因素。见closuretools.blogspot.com/2012/09/…
    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多