uglify-js-plugin
Version:
Uglify JavaScript for webpack
43 lines (38 loc) • 1.49 kB
JavaScript
var UglifyJS = require("uglify-js"),
colors = require("colors");
var debug = false;
function log(info) {
debug && console.log(info.blue);
}
function UglifyJsPlugin(options) {
this.options = options || {};
this.options.compress = this.options.compress === undefined ? true : this.options.compress;
this.options.fromString = true; //enable pass JavaScript source code, rather than file names.
}
UglifyJsPlugin.prototype.apply = function (compiler) {
var options = this.options;
debug = options.debug;
compiler.plugin('emit', function (compilation, callback) {
log('start UglifyJS:');
compilation.chunks.forEach(function (chunk) {
log(' UglifyJS chunk[' + chunk.name + ']: ' + chunk.files.join(' | '));
options.compress && chunk.files.forEach(function (filename) {
if (/\.js$/.test(filename)) {
var source = compilation.assets[filename].source();
var result = UglifyJS.minify(source, options);
compilation.assets[filename] = {
source: function () {
return result.code;
},
size: function () {
return result.code.length;
}
};
}
});
});
log('finish UglifyJS:');
callback();
});
};
module.exports = UglifyJsPlugin;