var path = require('path'),
gulp = require('gulp'),
gutil = require('gulp-util'),
source = require('vinyl-source-stream'),
browserify = require('browserify'),
watchify = require('watchify'),
handleErrors = require('../util/handleErrors');
function rebundle() {
return this.bundle()
.on('error', handleErrors.handler)
.pipe(handleErrors())
.pipe(source('main.js'))
.pipe(gulp.dest(paths.out));
}
function createBundler(args, debug) {
if (debug) {
args = args || {};
args.debug = true;
}
return browserify(paths.jsEntry, args);
}
function watch(onUpdate, debug) {
var bundler = watchify(createBundler(watchify.args, debug));
bundler.on('update', function () {
rebundle.call(this).on('end', onUpdate);
});
return rebundle.call(bundler);
}
module.exports = function bundle(debug) {
return rebundle.call(createBundler(null, debug));
};
module.exports.watch = watch;
module.exports.rebundle = rebundle;
module.exports.createBundler = createBundler;