2012-10-29 185 views
1

Closure编译器可以配置为将选定类型的警告提升为错误。当开发团队想要将他们的JS保持在更严格的标准时,这很有用。但是,我遇到了一个我们依赖的一些库(如RequireJS)并不严格的问题。所以当我这样做时:避免externs中的编译器错误(闭包编译器)

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

构建在RequireJS中失踪的属性错误失败。当然,没有错误升级,构建成功。

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

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

回答

2

你想创建外部文件,而不是使用原始源文件。使用原始源只适用于非常简单的库。我知道有几个工具可以提取extern,但它们不提供类型信息。一般来说,你想向图书馆维护者询问一些事情,然后询问Closure编译器邮件列表,然后自己构建一些东西(并共享它)。

+0

这是我害怕的答案。大多数图书馆不保留extern文件,内部这样做并不现实。但感谢您验证此问题的“正确”立场。 –

+0

是否有一个extern文件可用于库是决定使用哪个编译级别的主要因素。请参阅http://closuretools.blogspot.com/2012/09/which-compilation-level-is-right-for-me.html –