Build Taist addon (browserify + watchify + gulp)
var gulp = require('gulp')
, fs = require('fs')
, browserify = require('browserify')
, watchify = require('watchify')
, reactify = require('reactify')
, insert = require('gulp-insert')
, source = require('vinyl-source-stream')
;
function handleError(name) {
return function (err) {
throw new Error(err || name)
}
}
function scripts(watch) {
var bundler, rebundle;
bundler = browserify('./src/index.jsx', {
basedir: __dirname,
//debug: !production,
cache: {}, // required for watchify
packageCache: {}, // required for watchify
fullPaths: watch // required to be true only for watchify
});
if(watch) {
bundler = watchify(bundler)
}
//bundler.transform(reactify);
rebundle = function() {
var stream = bundler.bundle();
stream.on('error', handleError('Browserify'));
stream = stream
.pipe(source('addon.js'))
.pipe(insert.wrap(
'function init() { var bundle = ',
';return { start: bundle("./src/index.jsx") }};'
));
return stream.pipe(gulp.dest('build/taist'));
};
bundler.on('update', rebundle);
return rebundle();
}
gulp.task('scripts', function() {
return scripts(false);
});
gulp.task('watchScripts', function() {
return scripts(true);
});
gulp.task('default', ['scripts']);