diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/index.js | 6 | ||||
-rw-r--r-- | lib/moduleEnv.js | 20 | ||||
-rw-r--r-- | lib/rewire.js | 16 |
3 files changed, 35 insertions, 7 deletions
diff --git a/lib/index.js b/lib/index.js index 11229ff..765de10 100644 --- a/lib/index.js +++ b/lib/index.js @@ -7,10 +7,10 @@ var rewireModule = require("./rewire.js"); * @param {!String} filename Path to the module that shall be rewired. Use it exactly like require(). * @return {*} the rewired module */ -function rewire(filename) { - return rewireModule(module.parent, filename); +function rewire(filename, opts) { + return rewireModule(module.parent, filename, opts); } module.exports = rewire; -delete require.cache[__filename]; // deleting self from module cache so the parent module is always up to date
\ No newline at end of file +delete require.cache[__filename]; // deleting self from module cache so the parent module is always up to date diff --git a/lib/moduleEnv.js b/lib/moduleEnv.js index 8ad7891..29c407c 100644 --- a/lib/moduleEnv.js +++ b/lib/moduleEnv.js @@ -2,6 +2,7 @@ var Module = require("module"), fs = require("fs"), + babelCore = require("babel-core"), coffee; // caching original wrapper @@ -11,18 +12,34 @@ var moduleWrapper0 = Module.wrapper[0], nodeRequire, currentModule; -function load(targetModule) { +function load(targetModule, isTransform) { nodeRequire = targetModule.require; targetModule.require = requireProxy; currentModule = targetModule; registerExtensions(); + targetModule.load(targetModule.id); // This is only necessary if nothing has been required within the module reset(); } +function compile(targetModule, src, filename) { + nodeRequire = targetModule.require; + targetModule.require = requireProxy; + targetModule.filename = filename; + currentModule = targetModule; + + var convertedSrc = babelCore.transform(stripBOM(src), { + plugins: ["transform-es2015-constants"] + }); + + targetModule._compile(convertedSrc.code, filename); + + reset(); +} + function reset() { Module.wrapper[0] = moduleWrapper0; Module.wrapper[1] = moduleWrapper1; @@ -91,4 +108,5 @@ try { } exports.load = load; +exports.compile = compile; exports.inject = inject; diff --git a/lib/rewire.js b/lib/rewire.js index c52bbeb..1d240d4 100644 --- a/lib/rewire.js +++ b/lib/rewire.js @@ -1,5 +1,6 @@ var Module = require("module"), fs = require("fs"), + path = require("path"), getImportGlobalsSrc = require("./getImportGlobalsSrc.js"), getDefinePropertySrc = require("./getDefinePropertySrc.js"), detectStrictMode = require("./detectStrictMode.js"), @@ -8,11 +9,15 @@ var Module = require("module"), /** * Does actual rewiring the module. For further documentation @see index.js */ -function internalRewire(parentModulePath, targetPath) { +function internalRewire(parentModulePath, targetPath, opts) { var targetModule, prelude, appendix, - src; + src, + isTransform; + + opts = typeof opts === "object" ? opts : {}; + isTransform = !!opts.convertConst; // Checking params if (typeof targetPath !== "string") { @@ -54,7 +59,12 @@ function internalRewire(parentModulePath, targetPath) { } moduleEnv.inject(prelude, appendix); - moduleEnv.load(targetModule); + + if(isTransform) { + moduleEnv.compile(targetModule, src, targetPath); + } else { + moduleEnv.load(targetModule); + } return targetModule.exports; } |