UNPKG

babel-plugin-rewrite-require

Version:

Babel plugin for rewriting requires/imports

83 lines (64 loc) 2.1 kB
# Babel plugin for rewriting requires/imports ## Module aliases This plugin allows rewriting ES6 module imports and CommonJS-style `require()` calls using a simple module alias map: ```json { "aliases": { "some-module": "some-replacement-module", "another-module": "another-module/browser" }, } ``` ## Non-string literals With the following option enabled, `require()` calls that do not have a simple string literal argument will be replaced with an exception being thrown: ```json { "throwForNonStringLiteral": true } ``` This approach is used by several browserify modules to detect whether their built-in counterparts are available (e.g. `require('cry'+'pto')`) and should be enabled if you use this Babel plugin to alias node built-in modules to browserify modules. ## Optional modules A common pattern found in node modules is to check whether a certain dependency is available: ```js try { require('some-optional-dependency'); } catch (ex) { // Ignore, or load polyfill, or ... } ``` Because React Native's packager resolves `require()` calls during dependency resolution, it will require `'some-optional-dependency'` to be present and resolvable. If this module will never be available to your React Native app, and you want the runtime exception occur so that the `catch` clause can do its thing, you can blacklist these dependencies from ever being resolved. Instead, those `require()` calls will be replaced with an exception being thrown: ```json { "throwForModules": [ "some-optional-dependency" ] } ``` ## Optional files If the file that an import or `require()` call would resolve to is missing, it's usually up to node or the packager (e.g. webpack) to deal with that -- potentially creating the bundle would fail at build time rather than incurring an exception at runtime (which is what happens in node). To replace the import of an non-existent file or module with a runtime exception, use the following option: ```json { "throwForMissingFiles": [ "/path/to/some/optional/configuration.json", "/path/to/build.artifact" ] } ```