Alright, looks like someone figured it out for me. As you can see below, its not very friendly or Gulpy. Looks like a someone needs to make a bundler specifically for Gulp because this is horrible to look at.
It spits out the same size file as grunt-browserify does. So thats a pass.
var rendrClientFiles = glob.sync('rendr/{client,shared}/**/*.js', { cwd : './node_modules/' });
var rendrModules = rendrClientFiles.map(function (file) {
return file.replace('.js', '')
});
/**
* Bundle SquidInk app
* @param globs
* @returns {*}
*/
var getBundler = function (globs) {
var bundler, files;
bundler = browserify({
fullPaths : false,
entries : []
});
globs.forEach(function (pattern) {
files = glob.sync(pattern, { cwd : './' });
files.forEach(function (file) {
// it's nesessary for some app modules (e.g. 'app/app')
// to be exposed otherwise rendr couldn't require them
var moduleName = file.replace(/.js$/, '');
bundler.require('./' + file, { expose: moduleName});
});
});
rendrModules.forEach(function (moduleName) {
bundler.require(moduleName);
});
bundler.require('rendr-handlebars');
bundler.require('jquery');
return bundler;
};
gulp.task('browserify:app', function() {
var bundler = getBundler([ 'app/**/*.js' ]),
options = { insertGlobals : false, debug : true };
return bundler.bundle(options)
.pipe(plumberPlus())
.pipe(source('mergedAssets.js'))
.pipe(gulp.dest('./public'));
});