Support multiple --reserved-file args
This commit is contained in:
25
bin/uglifyjs
25
bin/uglifyjs
@@ -94,8 +94,8 @@ You need to pass an argument to this option to specify the name that your module
|
|||||||
.string("comments")
|
.string("comments")
|
||||||
.string("wrap")
|
.string("wrap")
|
||||||
.string("p")
|
.string("p")
|
||||||
.string("reserved-file")
|
|
||||||
.string("name-cache")
|
.string("name-cache")
|
||||||
|
.array("reserved-file")
|
||||||
|
|
||||||
.boolean("expr")
|
.boolean("expr")
|
||||||
.boolean("source-map-include-sources")
|
.boolean("source-map-include-sources")
|
||||||
@@ -150,6 +150,11 @@ if (ARGS.acorn) {
|
|||||||
var COMPRESS = getOptions("c", true);
|
var COMPRESS = getOptions("c", true);
|
||||||
var MANGLE = getOptions("m", true);
|
var MANGLE = getOptions("m", true);
|
||||||
var BEAUTIFY = getOptions("b", true);
|
var BEAUTIFY = getOptions("b", true);
|
||||||
|
var RESERVED = null;
|
||||||
|
|
||||||
|
if (ARGS.reserved_file) ARGS.reserved_file.forEach(function(filename){
|
||||||
|
RESERVED = UglifyJS.readReservedFile(filename, RESERVED);
|
||||||
|
});
|
||||||
|
|
||||||
if (ARGS.d) {
|
if (ARGS.d) {
|
||||||
if (COMPRESS) COMPRESS.global_defs = getOptions("d");
|
if (COMPRESS) COMPRESS.global_defs = getOptions("d");
|
||||||
@@ -159,16 +164,10 @@ if (ARGS.r) {
|
|||||||
if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/);
|
if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
var RESERVED = null;
|
if (RESERVED && MANGLE) {
|
||||||
if (ARGS.reserved_file) (function(){
|
if (!MANGLE.except) MANGLE.except = RESERVED.vars;
|
||||||
var data = fs.readFileSync(ARGS.reserved_file, "utf8");
|
else MANGLE.except = MANGLE.except.concat(RESERVED.vars);
|
||||||
RESERVED = data = JSON.parse(data);
|
}
|
||||||
if (data.vars) {
|
|
||||||
MANGLE.except = MANGLE.except
|
|
||||||
? MANGLE.except.concat(data.vars)
|
|
||||||
: data.vars;
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
function readNameCache(key) {
|
function readNameCache(key) {
|
||||||
return UglifyJS.readNameCache(ARGS.name_cache, key);
|
return UglifyJS.readNameCache(ARGS.name_cache, key);
|
||||||
@@ -457,9 +456,9 @@ function normalize(o) {
|
|||||||
|
|
||||||
function getOptions(x, constants) {
|
function getOptions(x, constants) {
|
||||||
x = ARGS[x];
|
x = ARGS[x];
|
||||||
if (!x) return null;
|
if (x == null) return null;
|
||||||
var ret = {};
|
var ret = {};
|
||||||
if (x !== true) {
|
if (x !== "") {
|
||||||
var ast;
|
var ast;
|
||||||
try {
|
try {
|
||||||
ast = UglifyJS.parse(x, { expression: true });
|
ast = UglifyJS.parse(x, { expression: true });
|
||||||
|
|||||||
@@ -194,6 +194,25 @@ exports.describe_ast = function() {
|
|||||||
return out + "";
|
return out + "";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.readReservedFile = function(filename, reserved) {
|
||||||
|
if (!reserved) {
|
||||||
|
reserved = { vars: [], props: [] };
|
||||||
|
}
|
||||||
|
var data = fs.readFileSync(filename, "utf8");
|
||||||
|
data = JSON.parse(data);
|
||||||
|
if (data.vars) {
|
||||||
|
data.vars.forEach(function(name){
|
||||||
|
UglifyJS.push_uniq(reserved.vars, name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (data.props) {
|
||||||
|
data.props.forEach(function(name){
|
||||||
|
UglifyJS.push_uniq(reserved.props, name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return reserved;
|
||||||
|
};
|
||||||
|
|
||||||
exports.readNameCache = function(filename, key) {
|
exports.readNameCache = function(filename, key) {
|
||||||
var cache = null;
|
var cache = null;
|
||||||
if (filename) {
|
if (filename) {
|
||||||
|
|||||||
Reference in New Issue
Block a user