improve usability of global_defs in minify() (#1987)

Use `@key` to `parse()` string value as `AST_Node`.

fixes #1986
This commit is contained in:
Alex Lam S.L
2017-05-22 01:38:43 +08:00
committed by GitHub
parent a1dedeb3ce
commit efdb65913b
4 changed files with 70 additions and 4 deletions

View File

@@ -87,6 +87,17 @@ function Compressor(options, false_by_default) {
unused : !false_by_default,
warnings : false,
}, true);
var global_defs = this.options["global_defs"];
if (typeof global_defs == "object") for (var key in global_defs) {
if (/^@/.test(key) && HOP(global_defs, key)) {
var ast = parse(global_defs[key]);
if (ast.body.length == 1 && ast.body[0] instanceof AST_SimpleStatement) {
global_defs[key.slice(1)] = ast.body[0].body;
} else throw new Error(string_template("Can't handle expression: {value}", {
value: global_defs[key]
}));
}
}
var pure_funcs = this.options["pure_funcs"];
if (typeof pure_funcs == "function") {
this.pure_funcs = pure_funcs;