Preventing closure compiler from renaming certain variables

phidah picture phidah · Jun 11, 2010 · Viewed 10.4k times · Source

I have a javascript file with a global object that must not be renamed (_gat from the Google Analytics async tracker).

This object must not be renamed by the Google Closure Compiler as Google Analytics looks for a variable with this specific name.

I've looked into the Javascript Doc notations that are mentioned: http://code.google.com/closure/compiler/docs/js-for-compiler.html - However, I cannot find anything regarding the "protection" of a variable.

The problem exists no matter if I use simple or advanced compilation.

How can I ensure that the _gat variable is not renamed?

Answer

Kevin Hakanson picture Kevin Hakanson · Aug 7, 2010

Using Closure Compiler web app, you can set js_externs. Refer to Advanced Compilation and Externs for more examples.

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