forked from enviPath/enviPy
42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
var browserify = require('browserify')
|
|
, vm = require('vm')
|
|
, exposify = require('../../')
|
|
|
|
module.exports = function run(map, file, window, cb) {
|
|
exposify.config = map;
|
|
|
|
var ctx = { window: window };
|
|
var fullPath = require.resolve('../fixtures/' + file);
|
|
|
|
// If five arguments are provided, fourth one is an object for browserify
|
|
// options.
|
|
var opts = {};
|
|
if (arguments.length === 5) {
|
|
opts = cb;
|
|
cb = arguments[4];
|
|
}
|
|
|
|
// If ignoreMissing is true, set ctx.require to a no-op. This needed for the
|
|
// jquery-plus-non-literals test, as it has require statements that don't get
|
|
// converted with browserify-shim.
|
|
if ('ignoreMissing' in opts) {
|
|
ctx.require = function() {};
|
|
}
|
|
|
|
browserify(opts)
|
|
.require(fullPath)
|
|
.transform(exposify)
|
|
.bundle(function (err, res) {
|
|
if (err) return cb(err);
|
|
try {
|
|
var require_ = vm.runInNewContext(res, ctx);
|
|
cb(null, require_(fullPath));
|
|
} catch (e) {
|
|
cb(e);
|
|
}
|
|
});
|
|
}
|
|
|