Skip to content

Instantly share code, notes, and snippets.

@Perlence
Created October 22, 2015 21:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Perlence/4fcfc467ed286c81375f to your computer and use it in GitHub Desktop.
Save Perlence/4fcfc467ed286c81375f to your computer and use it in GitHub Desktop.
Browserify, watchify, exit with status 1 on uglify
'use strict'
var browserify = require('browserify')
var gulp = require('gulp')
var plumber = require('gulp-plumber')
var gutil = require('gulp-util')
var uglify = require('gulp-uglify')
var buffer = require('vinyl-buffer')
var source = require('vinyl-source-stream')
var watchify = require('watchify')
gulp.task('default', ['uglify'])
gulp.task('browserify', function () {
return browserifyTask({debug: true})
})
gulp.task('watchify', function () {
return browserifyTask({debug: true, watch: true, uglify: true})
})
gulp.task('uglify', function () {
return browserifyTask({uglify: true})
})
function browserifyTask (params) {
if (params == null) params = {}
if (params.debug == null) params.debug = false
if (params.watch == null) params.watch = false
if (params.uglify == null) params.uglify = false
var b = browserify({
extensions: ['.js'],
debug: params.debug
})
b.add('index.js')
b.on('log', gutil.log)
function bundle () {
var stream = b.bundle()
.pipe(source('index.js'))
.pipe(buffer())
if (params.debug === true) {
stream = stream.pipe(plumber(errorHandler))
}
if (params.uglify === true) {
stream = stream.pipe(uglify())
}
return stream.pipe(gulp.dest('./build'))
}
if (params.watch === true) {
b = watchify(b)
b.on('update', function () {
gutil.log('Watchify detected a change')
bundle()
})
}
return bundle()
}
function errorHandler (err) {
gutil.log(err.toString())
this.emit('end')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment