假设您正在处理具有多个外部库依赖项的 javascript 项目,并希望使用 Google Closure Compiler 在 ADVANCED_OPTIMIZATIONS 模式下编译您的源代码。
由于在这种模式下,编译器会将您的代码调用重命名为外部库对象和函数,因此您必须提供externs以防止发生这种重命名。
但是,手动生成 extern 需要做很多工作,那么,从给定的 javascript lib 自动生成适当的 extern 的最佳方法是什么?
假设您正在处理具有多个外部库依赖项的 javascript 项目,并希望使用 Google Closure Compiler 在 ADVANCED_OPTIMIZATIONS 模式下编译您的源代码。
由于在这种模式下,编译器会将您的代码调用重命名为外部库对象和函数,因此您必须提供externs以防止发生这种重命名。
但是,手动生成 extern 需要做很多工作,那么,从给定的 javascript lib 自动生成适当的 extern 的最佳方法是什么?
请参阅以下 URL 作为起点。我还建议向您的外部添加类型信息以最大化编译器的好处。
许多项目包括 TypeScript 风格的类型定义(即 index.d.ts)。这种格式不能直接在 Closure Compiler 中使用,但我发现这个工具可以自动将 .d.ts 转换为 extern。
https://www.npmjs.com/package/tsd2cce - 来自 typescript 声明文件 (.d.ts) 的 google 闭包编译器外部转换器。
用法
npx tsd2cce declaration.d.ts create_extern.js
您可以通过以下方式导出函数: window['myFunc'] = myFunc;
更多细节在这里: http ://code.google.com/closure/compiler/docs/api-tutorial3.html#no
如果您实际上想要从其他地方导入的库的外部(即服务包装器、jquery 等),那么这就是您需要在其中传递外部的地方