asdf-games/node_modules/budo/lib/bundler.js

51 lines
1.3 KiB
JavaScript

var xtend = require('xtend')
var createMiddleware = require('watchify-middleware').emitter
var fromArgs = require('browserify/bin/args')
var browserify = require('browserify')
var path = require('path')
var defaultErrorHandler = require('./error-handler')
module.exports = createBundler
function createBundler (files, opts) {
var bOpts = xtend({
cache: {},
packageCache: {},
debug: opts.debug
}, opts.browserify)
var bundler
var args = opts.browserifyArgs
if (args && Array.isArray(args)) {
// CLI args for browserify
bundler = fromArgs(args, bOpts)
} else {
// just assume JS only options
bundler = browserify(bOpts)
}
files.forEach(function (file) {
bundler.add(path.resolve(file))
})
var errorHandler = opts.errorHandler
if (typeof errorHandler !== 'function' && errorHandler !== false) {
errorHandler = defaultErrorHandler
}
var cwd = opts.cwd
var rootDirName
if (cwd) {
cwd = path.normalize(cwd)
rootDirName = path.basename(cwd) + path.sep
}
return createMiddleware(bundler, {
delay: opts.delay || 0,
initialBundle: false,
errorHandler: typeof errorHandler === 'function'
? function (err) { // pass along directories as well
return errorHandler(err, cwd, rootDirName)
}
: errorHandler // pass undefined / false / etc
})
}