防止闭包编译器重命名某些变量

时间:2010-06-11 20:00:59

标签: javascript compression google-closure google-closure-compiler

我有一个带有全局对象的javascript文件,不能重命名(_gat来自Google Analytics异步跟踪器)。

Google Closure Compiler不得重命名此对象,因为Google Analytics会查找具有此特定名称的变量。

我查看了提到的Javascript文档符号:http://code.google.com/closure/compiler/docs/js-for-compiler.html - 但是,我找不到任何关于变量“保护”的内容。

无论我使用简单编码还是高级编译,问题都存在。

如何确保不重命名_gat变量?

4 个答案:

答案 0 :(得分:16)

使用Closure Compiler网络应用,您可以设置js_externs。有关更多示例,请参阅Advanced Compilation and Externs

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @js_externs _gat
// ==/ClosureCompiler==

答案 1 :(得分:6)

使用base.js中的goog.exportSymbol函数。文档在这里:http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html

用法就像

goog.exportSymbol("_gat", _gat)

答案 2 :(得分:3)

请参阅http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html关于“所有未加引号”的部分

将某些变量放入''>>> 'bob'阻止编译器重命名它们

答案 3 :(得分:2)

如果它未被声明为您编译的代码的一部分,则外部声明是合适的: http://code.google.com/closure/compiler/docs/api-tutorial3.html#externs