From 8c6e3f57298e79a6b628a6c567695a3e25204d3d Mon Sep 17 00:00:00 2001 From: Jo Simard Date: Wed, 17 Oct 2012 14:46:08 -0400 Subject: [PATCH] Implemented basic options support for compressor and comments. Example use: var result = UglifyJS.minify([files...], { compressor: { warnings:false }, // https://github.com/mishoo/UglifyJS2#keeping-copyright-notices-or-other-comments comments:true // false, true or "all" }); --- tools/node.js | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/tools/node.js b/tools/node.js index 07c3bfae..5439045c 100644 --- a/tools/node.js +++ b/tools/node.js @@ -62,12 +62,45 @@ for (var i in UglifyJS) { } } -exports.minify = function(files, options) { +exports.minify = function(files, options) +{ options = UglifyJS.defaults(options, { outSourceMap : null, inSourceMap : null, warnings : false, + compressor : null, + output : null, + comments: false }); + + var compressorOptions = UglifyJS.defaults(options.compressor, { + warnings : false + }); + + var outputOptions = UglifyJS.defaults(options.output, { + comments: false, + beautify: false + }); + + // Got comment option? + if (options.comments) { + if (/^\//.test(options.comments)) { + outputOptions.comments = new Function("return(" + options.comments + ")")(); + } else if (options.comments == "all") { + outputOptions.comments = true; + } else { + outputOptions.comments = function(node, comment) { + var text = comment.value; + var type = comment.type; + if (type == "comment2") { + // preserved multiline comments + return /License|license|@preserve|@license|@cc_on/i.test(text); + } + } + } + } + + if (typeof files == "string") files = [ files ]; @@ -83,9 +116,11 @@ exports.minify = function(files, options) { // 2. compress toplevel.figure_out_scope(); - var sq = UglifyJS.Compressor({ - warnings: options.warnings, - }); + + // Toplevel warnings override + if(options.warnings) compressorOptions.warnings = true; + + var sq = UglifyJS.Compressor(compressorOptions); toplevel = toplevel.transform(sq); // 3. mangle @@ -103,7 +138,11 @@ exports.minify = function(files, options) { file: options.outSourceMap, orig: inMap }); - var stream = UglifyJS.OutputStream({ source_map: map }); + + // Add sourcemap to output options + outputOptions.source_map = map; + + var stream = UglifyJS.OutputStream(outputOptions); toplevel.print(stream); return { code : stream + "",