Merge c0c42db007 into 1f1fccc45d
This commit is contained in:
commit
a0091c2268
|
|
@ -68,6 +68,7 @@ You need to pass an argument to this option to specify the name that your module
|
||||||
.describe("noerr", "Don't throw an error for unknown options in -c, -b or -m.")
|
.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("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.")
|
.describe("keep-fnames", "Do not mangle/drop function names. Useful for code relying on Function.prototype.name.")
|
||||||
|
.describe("keep-fparens", "Do not drop parentheses around function definitions. Useful for marking a function to be compiled eagerly by browser.")
|
||||||
.describe("quotes", "Quote style (0 - auto, 1 - single, 2 - double, 3 - original)")
|
.describe("quotes", "Quote style (0 - auto, 1 - single, 2 - double, 3 - original)")
|
||||||
.describe("reserved-file", "File containing reserved names")
|
.describe("reserved-file", "File containing reserved names")
|
||||||
.describe("reserve-domprops", "Make (most?) DOM properties reserved for --mangle-props")
|
.describe("reserve-domprops", "Make (most?) DOM properties reserved for --mangle-props")
|
||||||
|
|
@ -132,6 +133,7 @@ You need to pass an argument to this option to specify the name that your module
|
||||||
.boolean("noerr")
|
.boolean("noerr")
|
||||||
.boolean("bare-returns")
|
.boolean("bare-returns")
|
||||||
.boolean("keep-fnames")
|
.boolean("keep-fnames")
|
||||||
|
.boolean("keep-fparens")
|
||||||
.boolean("reserve-domprops")
|
.boolean("reserve-domprops")
|
||||||
.boolean("wrap-iife")
|
.boolean("wrap-iife")
|
||||||
|
|
||||||
|
|
@ -257,6 +259,10 @@ if (ARGS.wrap_iife) {
|
||||||
OUTPUT_OPTIONS.wrap_iife = true;
|
OUTPUT_OPTIONS.wrap_iife = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ARGS.keep_fparens) {
|
||||||
|
OUTPUT_OPTIONS.keep_fparens = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (BEAUTIFY)
|
if (BEAUTIFY)
|
||||||
UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY);
|
UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ function OutputStream(options) {
|
||||||
unescape_regexps : false,
|
unescape_regexps : false,
|
||||||
width : 80,
|
width : 80,
|
||||||
wrap_iife : false,
|
wrap_iife : false,
|
||||||
|
keep_fparens : false
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
// Convert comment option to RegExp if neccessary and set up comments filter
|
// Convert comment option to RegExp if neccessary and set up comments filter
|
||||||
|
|
@ -572,6 +573,14 @@ function OutputStream(options) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If option is on then keep wrapping parenthesises
|
||||||
|
if (output.option('keep_fparens')) {
|
||||||
|
if (this.start && this.start instanceof AST_Token && this.start.value === '(' &&
|
||||||
|
this.end && this.end instanceof AST_Token && this.end.value === ')') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (output.option('wrap_iife')) {
|
if (output.option('wrap_iife')) {
|
||||||
var p = output.parent();
|
var p = output.parent();
|
||||||
return p instanceof AST_Call && p.expression === this;
|
return p instanceof AST_Call && p.expression === this;
|
||||||
|
|
|
||||||
25
test/mocha/wrapping-parentheses.js
Normal file
25
test/mocha/wrapping-parentheses.js
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
var assert = require("assert");
|
||||||
|
var uglify = require("../../");
|
||||||
|
|
||||||
|
describe("Keep wrapping parentheses", function() {
|
||||||
|
it("Should keep wrapping parentheses if keep-fparens option is turned on", function() {
|
||||||
|
var originalCode = "define(\"module\",(function() {module.exports = 42;}));";
|
||||||
|
var expectedCode = "define(\"module\",(function(){module.exports=42}));";
|
||||||
|
var result = uglify.minify(originalCode, {
|
||||||
|
output: {
|
||||||
|
keep_fparens: true
|
||||||
|
},
|
||||||
|
fromString: true
|
||||||
|
});
|
||||||
|
assert.strictEqual(result.code, expectedCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should strip wrapping parentheses if keep-fparens option is turned off or not set", function() {
|
||||||
|
var originalCode = "define(\"module\",(function() {module.exports = 42;}));";
|
||||||
|
var expectedCode = "define(\"module\",function(){module.exports=42});";
|
||||||
|
var result = uglify.minify(originalCode, {
|
||||||
|
fromString: true
|
||||||
|
});
|
||||||
|
assert.strictEqual(result.code, expectedCode);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user