#Browsersync - Browserify, Babelify + Watchify + Sourcemaps Example
To try this example, follow these 4 simple steps.
Step 1: Clone this entire repo
$ git clone https://github.com/Browsersync/recipes.git bs-recipes
Step 2: Move into the directory containing this example
$ cd bs-recipes/recipes/gulp.browserify
Step 3: Install dependencies
$ npm install
Step 4: Run the example
$ npm start
This one is a beast. Write your React JSX code, in ES6, compiled by Browserify and auto-reload all devices when the compilation is complete.
gulpfile.js
: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" }); });