aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2015-01-05 11:03:13 +0200
committerMihai Bazon <mihai@bazon.net>2015-01-05 11:03:13 +0200
commite1f0747e4cca7b77a0189dacbff9fa4800a2835c (patch)
tree013bd242a4107d3cd9046e8038823637c7a1d9e7
parente37b67d013c4537a36bb3c24f4f99e72efbf6d4b (diff)
downloadtracifyjs-e1f0747e4cca7b77a0189dacbff9fa4800a2835c.tar.gz
tracifyjs-e1f0747e4cca7b77a0189dacbff9fa4800a2835c.zip
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.
-rwxr-xr-xbin/uglifyjs6
-rw-r--r--lib/compress.js3
2 files changed, 8 insertions, 1 deletions
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;
}