## Mangler options
-To enable the mangler you need to pass `--mangle` (`-m`). Optionally you
-can pass `-m sort=true` (we'll possibly have other flags in the future) in order
-to assign shorter names to most frequently used variables. This saves a few
-hundred bytes on jQuery before gzip, but the output is _bigger_ after gzip
-(and seems to happen for other libraries I tried it on) therefore it's not
-enabled by default.
+To enable the mangler you need to pass `--mangle` (`-m`). The following
+(comma-separated) options are supported:
+
+- `sort` — to assign shorter names to most frequently used variables. This
+ saves a few hundred bytes on jQuery before gzip, but the output is
+ _bigger_ after gzip (and seems to happen for other libraries I tried it
+ on) therefore it's not enabled by default.
+
+- `toplevel` — mangle names declared in the toplevel scope (disabled by
+ default).
+
+- `eval` — mangle names visible in scopes where `eval` or `when` are used
+ (disabled by default).
When mangling is enabled but you want to prevent certain names from being
mangled, you can declare those names with `--reserved` (`-r`) — pass a
SymbolDef.prototype = {
unmangleable: function(options) {
- return this.global
+ return (this.global && !(options && options.toplevel))
|| this.undeclared
|| (!(options && options.eval) && (this.scope.uses_eval || this.scope.uses_with));
},
AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){
return defaults(options, {
- except : [],
- eval : false,
- sort : false
+ except : [],
+ eval : false,
+ sort : false,
+ toplevel : false
});
});