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'),
minify = require(path.join(__dirname, 'build', 'minify'));
/** The current working directory */
var cwd = process.cwd();
/** Flag used to specify a backbone build */
var isBackbone = process.argv.indexOf('backbone') > -1;
@@ -871,14 +874,14 @@
// begin the minification process
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) {
fs.writeFileSync(path.join(__dirname, 'lodash.custom.min.js'), result);
fs.writeFileSync(path.join(cwd, 'lodash.custom.min.js'), result);
});
}
else {
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
* `onComplete` callback when finished.
* The exposed `minify` function minifies a given Lo-Dash `source` and invokes
* the `onComplete` callback when finished.
*
* @param {String} source The source to minify.
* @param {String} workingName The name to give temporary files creates during the minification process.
@@ -58,7 +58,10 @@
function Minify(source, workingName, onComplete) {
// create the destination directory if it doesn't exist
if (!fs.existsSync(distPath)) {
fs.mkdirSync(distPath);
// avoid errors when called as a npm executable
try {
fs.mkdirSync(distPath);
} catch(e) { }
}
this.compiled = {};
@@ -291,17 +294,20 @@
name = this.workingName,
uglified = this.uglified;
// 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);
// avoid errors when called as a npm executable
try {
// 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
fs.writeFileSync(path.join(distPath, name + '.uglify.js'), uglified.source);
fs.writeFileSync(path.join(distPath, name + '.uglify.js.gz'), uglified.gzip);
// save the Uglified version to disk
fs.writeFileSync(path.join(distPath, name + '.uglify.js'), uglified.source);
fs.writeFileSync(path.join(distPath, name + '.uglify.js.gz'), uglified.gzip);
// 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.gz'), hybrid.gzip);
// 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.gz'), hybrid.gzip);
} catch(e) { }
// select the smallest gzipped file and use its minified counterpart as the
// official minified release (ties go to Closure Compiler)
@@ -324,7 +330,7 @@
module.exports = minify;
}
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
// the same file
(function() {

View File

@@ -56,7 +56,7 @@
if (module != require.main) {
module.exports = postprocess;
} 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
// the same file
(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.
* @returns {String} Returns the processed source.
@@ -361,7 +361,7 @@
module.exports = preprocess;
}
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
// the same file
(function() {