[Pkg-javascript-commits] [uglifyjs] 01/11: Add --mangle-regex option

Jonas Smedegaard dr at jones.dk
Wed Aug 26 09:34:58 UTC 2015


This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag v2.4.24
in repository uglifyjs.

commit 0ac6918a411c85304dc716cd6de68b293a0d133a
Author: Joao Carlos <mail at joao-carlos.com>
Date:   Tue Jun 9 13:21:22 2015 +0300

    Add --mangle-regex option
---
 README.md         | 5 +++++
 bin/uglifyjs      | 5 ++++-
 lib/propmangle.js | 6 +++++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index f3eb5f7..073a871 100644
--- a/README.md
+++ b/README.md
@@ -132,6 +132,7 @@ The available options are:
   --reserve-domprops            Make (most?) DOM properties reserved for
                                 --mangle-props
   --mangle-props                Mangle property names
+  --mangle-regex                Only mangle property names matching the regex
   --name-cache                  File to hold mangled names mappings
 ```
 
@@ -251,6 +252,10 @@ A default exclusion file is provided in `tools/domprops.json` which should
 cover most standard JS and DOM properties defined in various browsers.  Pass
 `--reserve-domprops` to read that in.
 
+You can also use a regular expression to define which property names should be
+mangled.  For example, `--mangle-regex="^_"` will only mangle property names
+that start with an underscore.
+
 When you compress multiple files using this option, in order for them to
 work together in the end we need to ensure somehow that one property gets
 mangled to the same name in all of them.  For this, pass `--name-cache
diff --git a/bin/uglifyjs b/bin/uglifyjs
index 8851660..71c8264 100755
--- a/bin/uglifyjs
+++ b/bin/uglifyjs
@@ -70,6 +70,7 @@ You need to pass an argument to this option to specify the name that your module
     .describe("reserved-file", "File containing reserved names")
     .describe("reserve-domprops", "Make (most?) DOM properties reserved for --mangle-props")
     .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")
 
     .alias("p", "prefix")
@@ -375,10 +376,12 @@ async.eachLimit(files, 1, function (file, cb) {
     if (ARGS.mangle_props || ARGS.name_cache) (function(){
         var reserved = RESERVED ? RESERVED.props : null;
         var cache = readNameCache("props");
+        var regex = ARGS.mangle_regex ? new RegExp(ARGS.mangle_regex) : null;
         TOPLEVEL = UglifyJS.mangle_properties(TOPLEVEL, {
             reserved   : reserved,
             cache      : cache,
-            only_cache : !ARGS.mangle_props
+            only_cache : !ARGS.mangle_props,
+            regex      : regex
         });
         writeNameCache("props", cache);
     })();
diff --git a/lib/propmangle.js b/lib/propmangle.js
index 0890eaa..086709e 100644
--- a/lib/propmangle.js
+++ b/lib/propmangle.js
@@ -64,7 +64,8 @@ function mangle_properties(ast, options) {
     options = defaults(options, {
         reserved : null,
         cache : null,
-        only_cache : false
+        only_cache : false,
+        regex : null
     });
 
     var reserved = options.reserved;
@@ -79,6 +80,8 @@ function mangle_properties(ast, options) {
         };
     }
 
+    var regex = options.regex;
+
     var names_to_mangle = [];
 
     // step 1: find candidates to mangle
@@ -149,6 +152,7 @@ function mangle_properties(ast, options) {
     }
 
     function should_mangle(name) {
+        if (regex && !regex.test(name)) return false;
         if (reserved.indexOf(name) >= 0) return false;
         return cache.props.has(name)
             || names_to_mangle.indexOf(name) >= 0;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git



More information about the Pkg-javascript-commits mailing list