mirror of
https://github.com/sudomesh/disaster-radio.git
synced 2026-03-03 15:34:00 +01:00
122 lines
2.4 KiB
JavaScript
Executable File
122 lines
2.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var colors = require('colors');
|
|
var browserify = require('browserify');
|
|
var watchify = require('watchify');
|
|
var minimist = require('minimist');
|
|
|
|
function getTime() {
|
|
var d = new Date;
|
|
var t = [d.getHours(), d.getMinutes(), d.getSeconds()];
|
|
t = t.map(function(i) {
|
|
return (i < 9) ? '0'+i : i;
|
|
})
|
|
return t[0] + ':' + t[1] + '.' + t[2];
|
|
}
|
|
|
|
function build(opts) {
|
|
opts = opts || {};
|
|
|
|
var output = path.join(__dirname, '..', 'static', 'build', 'bundle.js');
|
|
|
|
function onBuildEnd(msg) {
|
|
console.log("Completed".green + ((msg) ? (': ' + msg) : ''));
|
|
}
|
|
|
|
function onBuildStart() {
|
|
|
|
process.stdout.write("Build started at " + getTime() + "... ");
|
|
|
|
var outStream = fs.createWriteStream(output);
|
|
|
|
if(!opts.dev) {
|
|
outStream.on('close', onBuildEnd);
|
|
}
|
|
|
|
b.bundle()
|
|
|
|
.on('error', function(err) {
|
|
if(err instanceof SyntaxError && err.message.match(/while parsing file/)) {
|
|
// Format syntax error messages nicely
|
|
var re = new RegExp(err.filename+'\:? ?');
|
|
var msg = err.message.replace(re, '');
|
|
msg = msg.replace(/ while parsing file\:.*/, '');
|
|
console.error();
|
|
console.error("\nError: ".red + msg.underline);
|
|
console.error();
|
|
console.error("Filename:", err.filename);
|
|
console.error();
|
|
console.error(err.loc);
|
|
console.error();
|
|
console.error(err.codeFrame);
|
|
console.error();
|
|
} else {
|
|
console.error(err);
|
|
}
|
|
|
|
})
|
|
|
|
.pipe(outStream);
|
|
}
|
|
|
|
var b = browserify({
|
|
entries: [path.join(__dirname, '..', 'src', 'js', 'index.js')],
|
|
cache: {},
|
|
packageCache: {}
|
|
})
|
|
|
|
if(opts.dev) {
|
|
console.log("Watching for changes...".yellow);
|
|
b.plugin(watchify);
|
|
}
|
|
|
|
b.on('update', function(time) {
|
|
onBuildStart();
|
|
});
|
|
|
|
if(opts.dev) {
|
|
b.on('log', onBuildEnd);
|
|
}
|
|
|
|
b.transform('babelify', {
|
|
presets: [
|
|
'es2015'
|
|
],
|
|
plugins: [
|
|
['transform-react-jsx', {pragma: 'h'}]
|
|
]
|
|
})
|
|
|
|
onBuildStart();
|
|
}
|
|
|
|
if (require.main === module) {
|
|
|
|
var argv = minimist(process.argv.slice(2), {
|
|
alias: {
|
|
d: 'dev'
|
|
},
|
|
boolean: [
|
|
'dev'
|
|
],
|
|
default: {}
|
|
});
|
|
|
|
build(argv);
|
|
|
|
} else {
|
|
|
|
module.exports = {
|
|
build: build,
|
|
|
|
watch: function(opts) {
|
|
opts = opts || opts;
|
|
opts.dev = true;
|
|
return build(opts);
|
|
}
|
|
}
|
|
|
|
}
|