Make build.js work as a npm executable.

Former-commit-id: fff327957854aa85a5abfe80994b59f3d0d24370
This commit is contained in:
John-David Dalton
2012-07-11 05:39:30 -04:00
parent 2ac887ff74
commit 5ca2da76df
4 changed files with 28 additions and 19 deletions

View File

@@ -8,6 +8,9 @@
vm = require('vm'), vm = require('vm'),
minify = require(path.join(__dirname, 'build', 'minify')); minify = require(path.join(__dirname, 'build', 'minify'));
/** The current working directory */
var cwd = process.cwd();
/** Flag used to specify a backbone build */ /** Flag used to specify a backbone build */
var isBackbone = process.argv.indexOf('backbone') > -1; var isBackbone = process.argv.indexOf('backbone') > -1;
@@ -871,14 +874,14 @@
// begin the minification process // begin the minification process
if (filterType || isBackbone || isLegacy || isMobile) { if (filterType || isBackbone || isLegacy || isMobile) {
fs.writeFileSync(path.join(__dirname, 'lodash.custom.js'), source); fs.writeFileSync(path.join(cwd, 'lodash.custom.js'), source);
minify(source, 'lodash.custom.min', function(result) { minify(source, 'lodash.custom.min', function(result) {
fs.writeFileSync(path.join(__dirname, 'lodash.custom.min.js'), result); fs.writeFileSync(path.join(cwd, 'lodash.custom.min.js'), result);
}); });
} }
else { else {
minify(source, 'lodash.min', function(result) { minify(source, 'lodash.min', function(result) {
fs.writeFileSync(path.join(__dirname, 'lodash.min.js'), result); fs.writeFileSync(path.join(cwd, 'lodash.min.js'), result);
}); });
} }
}()); }());

View File

@@ -35,8 +35,8 @@
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/** /**
* The exposed `minify` function minifies a given `source` and invokes the * The exposed `minify` function minifies a given Lo-Dash `source` and invokes
* `onComplete` callback when finished. * the `onComplete` callback when finished.
* *
* @param {String} source The source to minify. * @param {String} source The source to minify.
* @param {String} workingName The name to give temporary files creates during the minification process. * @param {String} workingName The name to give temporary files creates during the minification process.
@@ -58,7 +58,10 @@
function Minify(source, workingName, onComplete) { function Minify(source, workingName, onComplete) {
// create the destination directory if it doesn't exist // create the destination directory if it doesn't exist
if (!fs.existsSync(distPath)) { if (!fs.existsSync(distPath)) {
fs.mkdirSync(distPath); // avoid errors when called as a npm executable
try {
fs.mkdirSync(distPath);
} catch(e) { }
} }
this.compiled = {}; this.compiled = {};
@@ -291,17 +294,20 @@
name = this.workingName, name = this.workingName,
uglified = this.uglified; uglified = this.uglified;
// save the Closure Compiled version to disk // avoid errors when called as a npm executable
fs.writeFileSync(path.join(distPath, name + '.compiler.js'), compiled.source); try {
fs.writeFileSync(path.join(distPath, name + '.compiler.js.gz'), compiled.gzip); // save the Closure Compiled version to disk
fs.writeFileSync(path.join(distPath, name + '.compiler.js'), compiled.source);
fs.writeFileSync(path.join(distPath, name + '.compiler.js.gz'), compiled.gzip);
// save the Uglified version to disk // save the Uglified version to disk
fs.writeFileSync(path.join(distPath, name + '.uglify.js'), uglified.source); fs.writeFileSync(path.join(distPath, name + '.uglify.js'), uglified.source);
fs.writeFileSync(path.join(distPath, name + '.uglify.js.gz'), uglified.gzip); fs.writeFileSync(path.join(distPath, name + '.uglify.js.gz'), uglified.gzip);
// save the hybrid minified version to disk // save the hybrid minified version to disk
fs.writeFileSync(path.join(distPath, name + '.hybrid.js'), hybrid.source); fs.writeFileSync(path.join(distPath, name + '.hybrid.js'), hybrid.source);
fs.writeFileSync(path.join(distPath, name + '.hybrid.js.gz'), hybrid.gzip); fs.writeFileSync(path.join(distPath, name + '.hybrid.js.gz'), hybrid.gzip);
} catch(e) { }
// select the smallest gzipped file and use its minified counterpart as the // select the smallest gzipped file and use its minified counterpart as the
// official minified release (ties go to Closure Compiler) // official minified release (ties go to Closure Compiler)
@@ -324,7 +330,7 @@
module.exports = minify; module.exports = minify;
} }
else { else {
// read the JavaScript source file from the first argument if the script // read the Lo-Dash source file from the first argument if the script
// was invoked directly (e.g. `node minify.js source.js`) and write to // was invoked directly (e.g. `node minify.js source.js`) and write to
// the same file // the same file
(function() { (function() {

View File

@@ -56,7 +56,7 @@
if (module != require.main) { if (module != require.main) {
module.exports = postprocess; module.exports = postprocess;
} else { } else {
// read the JavaScript source file from the first argument if the script // read the Lo-Dash source file from the first argument if the script
// was invoked directly (e.g. `node post-compile.js source.js`) and write to // was invoked directly (e.g. `node post-compile.js source.js`) and write to
// the same file // the same file
(function() { (function() {

View File

@@ -196,7 +196,7 @@
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/** /**
* Pre-process a given Lo-Dash source, preparing it for minification. * Pre-process a given Lo-Dash `source`, preparing it for minification.
* *
* @param {String} source The source to process. * @param {String} source The source to process.
* @returns {String} Returns the processed source. * @returns {String} Returns the processed source.
@@ -361,7 +361,7 @@
module.exports = preprocess; module.exports = preprocess;
} }
else { else {
// read the JavaScript source file from the first argument if the script // read the Lo-Dash source file from the first argument if the script
// was invoked directly (e.g. `node pre-compile.js source.js`) and write to // was invoked directly (e.g. `node pre-compile.js source.js`) and write to
// the same file // the same file
(function() { (function() {