Name: babel-plugin-replace-require
Owner: Formidable
Description: Replace require output generated from import calls.
Created: 2016-11-18 20:59:20.0
Updated: 2016-11-23 13:46:59.0
Pushed: 2016-11-30 18:54:59.0
Homepage: null
Size: 33
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
require
output generated from import
calls.
There are often situations where you'd like to pass a different require
function into a require("foo")
call like specialOtherRequire("foo")
. This is
quite easy in CommonJS, yet challenging in ES-next import
's because the
outputted require
is not directly under user control.
This plugin allows import
statements to conditionally have the require
call
rewritten in generated output.
The plugin is available via npm:
m install babel-plugin-replace-require
The options passed to the plugin should be an object of [token, code replacement string] pairs. Tokens will be matched against the import's argument; matches will be replaced as shown below.
Note: The code replacement expressions are actually parsed and inserted into the AST. It's therefore possible for the replacement expression to itself be subsequently matched/replaced by the plugin.
.babelrc: Our configuration
lugins": [
["replace-require", {
"GLOBAL_REQUIRE": "global.myBetterRequire",
"REQUIRED_REQUIRE": "require('require-from-somewhere-else')"
}]
src/index.js: A source file with es6 / Node.js type imports.
s6 style
rt foo from "GLOBAL_REQUIRE/foo";
ommonJS style
t bar = require("REQUIRED_REQUIRE/bar");
lib/index.js: The outputted file, processed by the plugin.
s6 style
_foo = global.myBetterRequire("foo");
_foo2 = _interopRequireDefault(_foo);
tion _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
ommonJS style
bar = require('require-from-somewhere-else')("bar");
This plugin was written to help implement the
module pattern in builder
archetypes for enabling dependency encapsulation.
This plugin is useful for code patterns that work in Node.js for alternate
require
's. If the code needs to run on the frontend via webpack, the
webpack-alternate-require-loader
can further process the output of this plugin into fully-resolved modules
analogous to what Node.js would do.
Contributions welcome! See CONTRIBUTING.md