54 lines
1.4 KiB
54 lines
1.4 KiB
var gulp = require('gulp'); |
|
var gutil = require('gulp-util'); |
|
var source = require('vinyl-source-stream'); |
|
var babelify = require('babelify'); |
|
var watchify = require('watchify'); |
|
var exorcist = require('exorcist'); |
|
var browserify = require('browserify'); |
|
var browserSync = require('browser-sync').create(); |
|
|
|
// Watchify args contains necessary cache options to achieve fast incremental bundles. |
|
// See watchify readme for details. Adding debug true for source-map generation. |
|
watchify.args.debug = true; |
|
// Input file. |
|
var bundler = watchify(browserify('./app/js/app.js', watchify.args)); |
|
|
|
// Babel transform |
|
bundler.transform(babelify.configure({ |
|
sourceMapRelative: 'app/js' |
|
})); |
|
|
|
// On updates recompile |
|
bundler.on('update', bundle); |
|
|
|
function bundle() { |
|
|
|
gutil.log('Compiling JS...'); |
|
|
|
return bundler.bundle() |
|
.on('error', function (err) { |
|
gutil.log(err.message); |
|
browserSync.notify("Browserify Error!"); |
|
this.emit("end"); |
|
}) |
|
.pipe(exorcist('app/js/dist/bundle.js.map')) |
|
.pipe(source('bundle.js')) |
|
.pipe(gulp.dest('./app/js/dist')) |
|
.pipe(browserSync.stream({once: true})); |
|
} |
|
|
|
/** |
|
* Gulp task alias |
|
*/ |
|
gulp.task('bundle', function () { |
|
return bundle(); |
|
}); |
|
|
|
/** |
|
* First bundle, then serve from the ./app directory |
|
*/ |
|
gulp.task('default', ['bundle'], function () { |
|
browserSync.init({ |
|
server: "./app" |
|
}); |
|
}); |