keep wrapping parens. for function extpressions

This commit is contained in:
a.gutnikov 2016-11-09 18:31:57 +03:00
parent 557b3e412f
commit db73113599
2 changed files with 15 additions and 0 deletions

View File

@ -69,6 +69,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 parenthesises 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")
@ -256,6 +258,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);

View File

@ -69,6 +69,7 @@ function OutputStream(options) {
quote_style : 0, quote_style : 0,
keep_quoted_props: false, keep_quoted_props: false,
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
@ -558,6 +559,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;