Last active
August 29, 2015 14:08
-
-
Save builtbylane/921b2df18b224ba27467 to your computer and use it in GitHub Desktop.
watchifying multiple bundles with gulp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var gulp = require('gulp'); | |
var filter = require('gulp-filter'); | |
var source = require('vinyl-source-stream'); | |
var gutil = require('gulp-util'); | |
var path = require('path'); | |
var colors = require('colors'); | |
var createBundle = function(file) { | |
var method = (env.prebuild || env.stage || env.production) ? 'browserify' : 'watchify'; | |
var bundler = require('browserify')({ | |
cache: {} | |
, packageCache: {} | |
, fullPaths: true | |
, entries: [file.path] | |
, debug: true | |
}); | |
var rebundle = function() { | |
var startTime = new Date().getTime(); | |
gutil.log(( method + 'ing').magenta + ' : ' + file.path.yellow); | |
// uglify-ify it? | |
if (env.prebuild || env.production) { | |
gutil.log(('uglify-ify-ing').magenta + ' : ' + file.path.yellow); | |
bundler.transform({ | |
global: true, | |
source_map: false | |
},require('uglifyify')); | |
} | |
bundler | |
.external('backbone') | |
.external('underscore') | |
.external('underscore.string') | |
.external('redefLibs') | |
// elsify stream | |
.transform(require('ejsify')) | |
.transform(require('brfs')) | |
// attempting to hijack the errors | |
.on('error', function(args){ | |
gutil.log(args); | |
}) | |
// log time | |
.on('end', function(){ | |
var time = (new Date().getTime() - startTime) / 1000; | |
gutil.log( file.path.yellow + ' b-fied ' + time.magenta + ' s' ); | |
}) | |
// bundle it. | |
.bundle() | |
// return bundled content to a stream of the same name as original | |
.pipe(source(path.basename(file.path))) | |
// keep it organized by app name | |
.pipe( gulp.dest((env.prebuild ? 'dist/static/' : './static/') + path.dirname(file.path).replace( __dirname + '/apps/', '' ))); | |
}; | |
// watch. | |
if(!env.stage && !env.production && !env.prebuild ) { | |
bundler = require('watchify')(bundler); | |
bundler.on('update', rebundle); | |
} | |
// init | |
return rebundle(); | |
}; | |
gulp.task('browserify', function(){ | |
// there are about 18 sources, and 35 dependencies total | |
return gulp.src( './apps/**/+(client|dev)*.js') | |
// pull each file out of the stream | |
.pipe(require('gulp-tap')(function(file, t) { | |
createBundle(file); | |
})); | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment