如何为Google Closure编译器自动生成externs

时间:2010-11-24 13:44:26

标签: google-closure google-closure-compiler

假设您正在使用具有多个外部库依赖项的javascript项目,并希望使用Google Closure Compiler以ADVANCED_OPTIMIZATIONS模式编译您的源代码。

由于在此模式下编译器会将代码调用重命名为外部库对象和函数,因此必须提供externs以防止重命名发生。

但是,手动生成externs需要做很多工作,那么,从给定的javascript lib自动生成适当的extern的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

请参阅以下网址作为起点。我还建议在外部添加类型信息,以最大限度地提高编译器的效益。

http://www.dotnetwise.com/Code/Externs/

答案 1 :(得分:0)

许多项目包含 TypeScript 风格的类型定义(即 index.d.ts)。这种格式不能直接在 Closure Compiler 中使用,但我发现这个工具可以自动将 .d.ts 转换为 extern。

https://www.npmjs.com/package/tsd2cce - 来自打字稿声明文件 (.d.ts) 的谷歌闭包编译器外部转换器。

用法

npx tsd2cce declaration.d.ts create_extern.js

答案 2 :(得分:-2)

您可以通过以下方式导出您的功能: window ['myFunc'] = myFunc;

这里有更多细节: http://code.google.com/closure/compiler/docs/api-tutorial3.html#no

如果您真的想要从其他地方导入的libs externs(即服务包装器,jquery等)那么你需要传递extern的地方 如果您使用的是teh jar编译器,则使用--externs,在上面的链接中指定更多细节