Skip to content

Instantly share code, notes, and snippets.

@jlogsdon
Last active December 18, 2015 11:59
Show Gist options
  • Save jlogsdon/5779710 to your computer and use it in GitHub Desktop.
Save jlogsdon/5779710 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var browserify = require('browserify'),
async = require('async'),
glob = require('glob'),
path = require('path'),
fs = require('fs'),
_bundleCounter = 0,
_buildCounter = 0,
_pieces = {};
var b = browserify()
.require('./node_modules/rendr/node_modules/underscore/underscore.js', {expose: 'underscore'})
.require('./node_modules/rendr/node_modules/backbone/backbone.js', {expose: 'backbone'})
.require('./node_modules/rendr/node_modules/async/index.js', {expose: 'async'})
.require('./node_modules/rendr/node_modules/handlebars/lib/handlebars.js', {expose: 'handlebars'})
.require('./node_modules/rendr/node_modules/qs/index.js', {expose: 'qs'})
.ignore('express')
.ignore('validator');
function _bundle() {
if (++_bundleCounter == 2) {
b.bundle(function(err, source) {
_build('bundle', source);
});
}
}
function _build(target, contents) {
_pieces[target] = contents;
if (++_buildCounter == 2) {
process.stdout.write(_pieces.vendor);
process.stdout.write("\n");
process.stdout.write(_pieces.bundle);
}
}
glob('./node_modules/rendr/{client,shared}/**/*.js', function(err, files) {
if (err) {
console.err(err);
return;
}
files.forEach(function(file) {
var exposed = file.replace(/^\.\/node_modules\/(.*?)\.js$/, '$1');
b.require(file, {expose: exposed});
});
_bundle();
});
glob('./app/**/*.js', function(err, files) {
if (err) {
console.err(err);
return;
}
files.forEach(function(file) {
var exposed = file.replace(/^\.(.*?)\.js$/, '$1');
b.require(file, {expose: exposed});
});
_bundle();
});
glob('./assets/vendor/**/*.js', function(err, files) {
if (err) {
console.err(err);
return;
}
async.map(files, fs.readFile, function(err, sources) {
_build('vendor', sources.join("\n"));
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment