mason
Version:
simple, fun, static-file builder for jade, stylus, and javascript
33 lines (27 loc) • 923 B
JavaScript
var util = require('../util');
var jsp = require("uglify-js").parser;
var pro = require("uglify-js").uglify;
module.exports = function(options) {
var asset = options.asset;
// Build lists of source and destination files
var sourceFiles = util.buildPaths(options.dir, asset.fromBase, asset.fromSrc);
var destFiles = util.buildPaths(options.dir, asset.toBase, asset.toSrc);
// Concatenate and compress the files
var code = util.concatFiles(sourceFiles);
var compressed = compressJS(code);
// Write the destination files
return destFiles.forEach(writeCompressed);
function writeCompressed(destFile) {
util.writeFile(destFile, compressed);
}
};
function compressJS(code) {
// parse the JS code into AST
var ast = jsp.parse(code);
// mangle names
ast = pro.ast_mangle(ast);
// compress
ast = pro.ast_squeeze(ast);
// generate JS from the compressed AST
return pro.gen_code(ast);
}