Skip to content

Instantly share code, notes, and snippets.

@MoOx
Last active October 20, 2016 14:37
Show Gist options
  • Save MoOx/3bb6350ca23110ff6e1d to your computer and use it in GitHub Desktop.
Save MoOx/3bb6350ca23110ff6e1d to your computer and use it in GitHub Desktop.
Optimized watchify/browserify with gulp
/**
* parses cli arguments as options
*/
var options = require("minimist")(process.argv.slice(2))
var defaults = {
debug: true,
plumber: true,
minify: false
}
// set some defaults options depending on some flags
if (options.production) {
defaults.debug = false
defaults.plumber = false
defaults.minify = true
}
options.debug = options.debug === undefined ? defaults.debug : options.debug
options.plumber = options.plumber === undefined ? defaults.plumber : options.plumber
options.minify = options.minify === undefined ? defaults.minify : options.minify
module.exports = options
var gulp = require("gulp")
var util = require("gulp-util")
var plumber = require("gulp-plumber")
var tap = require("gulp-tap")
var opts = require("./options")
var bundler
module.exports = function() {
gulp.src("./src/index.js", {read: false})
.pipe(plumber(util.log))
.pipe(tap(function(file) {
if (!bundler) {
bundler = require("browserify")({
entries: [file.path],
cache: {},
packageCache: {},
fullPaths: true,
debug: opts.debug
})
if (opts.watch) {
bundler = require("watchify")(bundler)
}
bundler
.on("log", util.log)
.on("update", function() {
gulp.start("scripts")
})
addTransforms(bundler)
}
file.contents = bundler.bundle()
}))
.pipe(gulp.dest("./dist/"))
}
function addTransforms(bundler) {
bundler.transform(require("reactify"))
bundler.transform(require("es6ify"))
if (opts.minify) {
bundler.transform(require("uglifyify"))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment