From: Mihai Bazon Date: Mon, 5 Jan 2015 09:03:13 +0000 (+0200) Subject: Support keep_fnames in compressor, and --keep-fnames. #552 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=e1f0747e4cca7b77a0189dacbff9fa4800a2835c;p=UglifyJS.git Support keep_fnames in compressor, and --keep-fnames. #552 Passing `--keep-fnames` will enable it both for compressor/mangler, so that function names will not be dropped (when unused) nor mangled. --- diff --git a/bin/uglifyjs b/bin/uglifyjs index a177cb6f..44afd2f4 100755 --- a/bin/uglifyjs +++ b/bin/uglifyjs @@ -65,6 +65,7 @@ You need to pass an argument to this option to specify the name that your module .describe("V", "Print version number and exit.") .describe("noerr", "Don't throw an error for unknown options in -c, -b or -m.") .describe("bare-returns", "Allow return outside of functions. Useful when minifying CommonJS modules.") + .describe("keep-fnames", "Do not mangle/drop function names. Useful for code relying on Function.prototype.name.") .alias("p", "prefix") .alias("o", "output") @@ -160,6 +161,11 @@ if (ARGS.screw_ie8) { OUTPUT_OPTIONS.screw_ie8 = true; } +if (ARGS.keep_fnames) { + if (COMPRESS) COMPRESS.keep_fnames = true; + if (MANGLE) MANGLE.keep_fnames = true; +} + if (BEAUTIFY) UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY); diff --git a/lib/compress.js b/lib/compress.js index 2c950992..345d8ad6 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -62,6 +62,7 @@ function Compressor(options, false_by_default) { unused : !false_by_default, hoist_funs : !false_by_default, keep_fargs : false, + keep_fnames : false, hoist_vars : false, if_return : !false_by_default, join_vars : !false_by_default, @@ -1666,7 +1667,7 @@ merge(Compressor.prototype, { OPT(AST_Function, function(self, compressor){ self = AST_Lambda.prototype.optimize.call(self, compressor); - if (compressor.option("unused")) { + if (compressor.option("unused") && !compressor.option("keep_fnames")) { if (self.name && self.name.unreferenced()) { self.name = null; }