add `--pure-funcs` option
authorDamian Krzeminski <pirxpilot@code42day.com>
Wed, 14 Oct 2015 01:05:37 +0000 (21:05 -0400)
committerDamian Krzeminski <pirxpilot@code42day.com>
Wed, 14 Oct 2015 01:24:14 +0000 (21:24 -0400)
it has the same effect as specifying `pure_funcs` in `--compressor`
option, however it's much easier to use

instead of:

    --compressor 'pure_func=["Math.floor","debug","console.logTime"]'

it's now possible:

    --compressor --pure-funcs Math.floor debug console.logTime

fixes #684

README.md
bin/uglifyjs

index b6abc37..c243454 100644 (file)
--- a/README.md
+++ b/README.md
@@ -134,6 +134,8 @@ The available options are:
   --mangle-props                Mangle property names
   --mangle-regex                Only mangle property names matching the regex
   --name-cache                  File to hold mangled names mappings
+  --pure-funcs                  List of functions that can be safely removed if
+                                their return value is not used           [array]
 ```
 
 Specify `--output` (`-o`) to declare the output file.  Otherwise the output
index f82d43c..ca75f15 100755 (executable)
@@ -72,6 +72,7 @@ You need to pass an argument to this option to specify the name that your module
     .describe("mangle-props", "Mangle property names")
     .describe("mangle-regex", "Only mangle property names matching the regex")
     .describe("name-cache", "File to hold mangled names mappings")
+    .describe("pure-funcs", "List of functions that can be safely removed if their return value is not used")
 
     .alias("p", "prefix")
     .alias("o", "output")
@@ -104,6 +105,7 @@ You need to pass an argument to this option to specify the name that your module
     .string("prefix")
     .string("name-cache")
     .array("reserved-file")
+    .array("pure-funcs")
 
     .boolean("expr")
     .boolean("source-map-include-sources")
@@ -175,6 +177,10 @@ if (ARGS.d) {
     if (COMPRESS) COMPRESS.global_defs = getOptions("d");
 }
 
+if (ARGS.pure_funcs) {
+    if (COMPRESS) COMPRESS.pure_funcs = ARGS.pure_funcs;
+}
+
 if (ARGS.r) {
     if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/);
 }