Files
rippled/webpack.js
2012-11-23 18:41:41 -08:00

69 lines
1.6 KiB
JavaScript

var pkg = require('./package.json');
var webpack = require("webpack");
var async = require("async");
var extend = require("extend");
var cfg = {
// General settings
baseName: pkg.name,
programPath: __dirname + "/src/js/index.js",
// CLI-configurable options
watch: false,
outputDir: __dirname + "/build"
};
for (var i = 0, l = process.argv.length; i < l; i++) {
var arg = process.argv[i];
if (arg === '-w' || arg === '--watch') {
cfg.watch = true;
} else if (arg === '-o') {
cfg.outputDir = process.argv[++i];
}
};
var builds = [{
filename: 'ripple-'+pkg.version+'.js',
},{
filename: 'ripple-'+pkg.version+'-debug.js',
debug: true
},{
filename: 'ripple-'+pkg.version+'-min.js',
minimize: true
}];
var defaultOpts = {
// [sic] Yes, this is the spelling upstream.
libary: 'ripple',
// However, it's fixed in webpack 0.8, so we include the correct spelling too:
library: 'ripple',
watch: cfg.watch
};
function build(opts) {
var opts = extend({}, defaultOpts, opts);
opts.output = cfg.outputDir + "/"+opts.filename;
return function (callback) {
var filename = opts.filename;
webpack(cfg.programPath, opts, function (err, result) {
console.log(' '+filename, result.hash, '['+result.modulesCount+']');
if ("function" === typeof callback) {
callback(err);
}
});
}
}
if (!cfg.watch) {
console.log('Compiling Ripple JavaScript...');
async.series(builds.map(build), function (err) {
if (err) {
console.error(err);
}
});
} else {
console.log('Watching files for changes...');
builds.map(build).forEach(function (build) {
build();
});
}