gulp-inject-modules
Version:
Loads JavaScript files on-demand from a Gulp stream into Node's module loader.
35 lines (29 loc) • 722 B
JavaScript
;
var Module = require('module');
var path = require('path');
var sourceMap = require('source-map-support');
var through = require('through2').obj;
var vm = require('vm');
var cache = {};
var originalLoader = Module._extensions['.js'];
sourceMap.install({
retrieveFile: function (path) {
if (cache[path]) {
return cache[path].contents.toString();
}
}
});
Module._extensions['.js'] = function (module, filename) {
var file = cache[filename];
if (file) {
module._compile(file.contents.toString(), filename);
} else {
originalLoader(module, filename);
}
};
module.exports = function () {
return through(function (file, enc, cb) {
cache[file.path] = file;
return cb(null, file);
});
};