From 799509e145e56a9a6ccbaad6d32e1c404e0469eb Mon Sep 17 00:00:00 2001 From: Jeremy Marzka Date: Sun, 17 Jan 2016 21:54:09 -0500 Subject: [PATCH] Added a mangle properties option --- README.md | 3 +++ tools/node.js | 31 ++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 6dea439a..9cde9ee8 100644 --- a/README.md +++ b/README.md @@ -626,6 +626,9 @@ Other options: - `mangle` — pass `false` to skip mangling names. +- `mangleProperties` (default `false`) — pass an object to specify custom + mangle property options. + - `output` (default `null`) — pass an object if you wish to specify additional [output options][codegen]. The defaults are optimized for best compression. diff --git a/tools/node.js b/tools/node.js index f6048661..5764286e 100644 --- a/tools/node.js +++ b/tools/node.js @@ -32,15 +32,17 @@ UglifyJS.AST_Node.warn_function = function(txt) { exports.minify = function(files, options) { options = UglifyJS.defaults(options, { - spidermonkey : false, - outSourceMap : null, - sourceRoot : null, - inSourceMap : null, - fromString : false, - warnings : false, - mangle : {}, - output : null, - compress : {} + spidermonkey : false, + outSourceMap : null, + sourceRoot : null, + inSourceMap : null, + fromString : false, + warnings : false, + mangle : {}, + mangleProperties : false, + nameCache : null, + output : null, + compress : {} }); UglifyJS.base54.reset(); @@ -77,14 +79,21 @@ exports.minify = function(files, options) { toplevel = toplevel.transform(sq); } - // 3. mangle + // 3. mangle properties + if (options.mangleProperties || options.nameCache) { + options.mangleProperties.cache = UglifyJS.readNameCache(options.nameCache, "props"); + toplevel = UglifyJS.mangle_properties(toplevel, options.mangleProperties); + UglifyJS.writeNameCache(options.nameCache, "props", options.mangleProperties.cache); + } + + // 4. mangle if (options.mangle) { toplevel.figure_out_scope(options.mangle); toplevel.compute_char_frequency(options.mangle); toplevel.mangle_names(options.mangle); } - // 4. output + // 5. output var inMap = options.inSourceMap; var output = {}; if (typeof options.inSourceMap == "string") { -- 2.34.1