This commit is contained in:
Jo Simard 2012-11-13 03:11:03 -08:00
commit 01f8744e3a

View File

@ -49,14 +49,44 @@ for (var i in UglifyJS) {
} }
} }
exports.minify = function(files, options) { exports.minify = function(files, options)
{
options = UglifyJS.defaults(options, { options = UglifyJS.defaults(options, {
outSourceMap : null, outSourceMap : null,
sourceRoot : null, sourceRoot : null,
inSourceMap : null, inSourceMap : null,
fromString : false, fromString : false,
warnings : false, warnings : false,
compressor : null,
output : null,
comments: false
}); });
// Available options in lib/compress.js
var compressorOptions = UglifyJS.merge({}, options.compressor);
// Available options in lib/output.js
var outputOptions = UglifyJS.merge({}, options.output);
// 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") if (typeof files == "string")
files = [ files ]; files = [ files ];
@ -74,9 +104,11 @@ exports.minify = function(files, options) {
// 2. compress // 2. compress
toplevel.figure_out_scope(); 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); toplevel = toplevel.transform(sq);
// 3. mangle // 3. mangle
@ -95,7 +127,11 @@ exports.minify = function(files, options) {
orig: inMap, orig: inMap,
root: options.sourceRoot root: options.sourceRoot
}); });
var stream = UglifyJS.OutputStream({ source_map: map });
// Add sourcemap to output options
outputOptions.source_map = map;
var stream = UglifyJS.OutputStream(outputOptions);
toplevel.print(stream); toplevel.print(stream);
return { return {
code : stream + "", code : stream + "",