UNPKG

applugins

Version:

Simple modular application architecture

70 lines (55 loc) 1.71 kB
var gulp = require('gulp'); var $ = require('gulp-load-plugins')(); var sourcemaps = require('gulp-sourcemaps'); var source = require('vinyl-source-stream'); var buffer = require('vinyl-buffer'); var browserify = require('browserify'); var watchify = require('watchify'); var babel = require('babelify'); function compile(watch) { var bundler = watchify(browserify('./index.jsx', {debug: true, standalone:'API'}).transform(babel.configure({ //whitelist: ["regenerator"], stage: 0, optional:['runtime'] }))); function rebundle() { bundler.bundle() .on('error', function (err) { console.error(err); this.emit('end'); }) .pipe(source('build.js')) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./build')); } if (watch) { bundler.on('update', function () { console.log('-> bundling...'); rebundle(); }); } rebundle(); } function watch() { return compile(true); } gulp.task('webserver', function () { gulp.src(['']) .pipe($.webserver({ livereload: true, //directoryListing: true, open: true })); }); gulp.task('test', ['build'], function () { return gulp.src('test/test.js', {read: false}).pipe($.mocha({reporter: 'dot', require: ['chai']})); }); gulp.task('build', function () { return compile(); }); gulp.task('watch', function () { return watch(); }); gulp.task('default', ['watch']);