Website/node_modules/metalsmith-uglify/lib/minify.js
2015-12-02 18:21:44 -05:00

38 lines
912 B
JavaScript

'use strict';
var format = require('util').format;
var uglify = require('uglify-js');
var arrify = require('arrify');
module.exports = function minify(files, options) {
var mangled;
files = arrify(files);
var contents = files.map(function (file) {
return file.contents.toString();
});
var paths = files.map(function (file) { return file.path; });
try {
mangled = uglify.minify(contents, options);
mangled.map = processSourceMap(files, mangled.map);
return mangled;
} catch (err) {
return new Error(
format('uglify: Failed to minify %s: %s', paths.join(', '), err.stack)
);
}
};
function processSourceMap(files, map) {
if (!map) { return null; }
map = JSON.parse(map);
map.sourcesContent = [];
files.forEach(function (file, i) {
map.sources[i] = file.path;
map.sourcesContent[i] = file.contents.toString();
});
return JSON.stringify(map);
}