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); })); });