Skip to content

Instantly share code, notes, and snippets.

@jsgoyette
Created November 10, 2012 23:18
Show Gist options
  • Save jsgoyette/4052933 to your computer and use it in GitHub Desktop.
Save jsgoyette/4052933 to your computer and use it in GitHub Desktop.
Uglify a javascript file.
#!/usr/local/bin/node
var fs = require('fs'),
uglify = require('uglify-js'),
header = function (name) {
return '/*\n * ' + name + '.js ~ Copyright (c) 2012 My Copyright\n */\n';
};
function buildFile() {
var args = Array.prototype.slice.call(arguments);
if (!args.length) return;
var js = ''
, name = '';
for (var i = 0; i < args.length; i++) {
try {
console.log('minifying ' + args[i] + '.js');
js += ' ' + fs.readFileSync(__dirname + '/' + args[i] + '.js').toString();
name += ' ' + args[i] + '.js';
} catch (err) {
console.log(err);
return;
}
}
var ast = uglify.parser.parse(js);
ast = uglify.uglify.ast_mangle(ast);
ast = uglify.uglify.ast_squeeze(ast);
var minifiedJS = uglify.uglify.gen_code(ast);
console.log('writing to ' + args[0] + '.js');
fs.writeFile(__dirname + '/' + args[0] + '.min.js', header(name) + minifiedJS);
}
console.log('building and minifying ...');
// make minified file from single js file
buildFile('filename_minus_js_extension');
// or combine files
buildFile('filename_minus_js_extension', 'another_file');
console.log('done');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment