Registry / testing / babel-plugin-rewire

babel-plugin-rewire

JSON →
library1.2.0jsnpmunverified

A Babel plugin that adds __Rewire__, __ResetDependency__, and __GetDependency__ methods to modules for mocking dependencies in tests. Version 1.2.0 is stable with moderate release cadence. It supports ES6 import, CommonJS require(), and top-level variable/function rewiring. Unlike proxyquire or rewire.js, it works at the AST level via Babel, enabling rewiring of named exports and internal dependencies. Supports both default and named exports, and automatically handles primitive vs object default exports. Compatible with React and other transpiled environments.

npm install babel-plugin-rewire
INSTALL
IMPORT
SIG · BABEL-PLUGIN-REWIR
B
babel-plugin-rewire
testingjavascriptv1.2.0
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

__Rewire__
import myModule from 'my-module'; myModule.__Rewire__('dep', mock)
const myModule = require('my-module'); myModule.__Rewire__('dep', mock)
Works with both ESM and CJS after plugin transforms code.
__ResetDependency__
myModule.__ResetDependency__('dep')
Resets a specific dependency to its original value.
__GetDependency__
const dep = myModule.__GetDependency__('dep')
Gets the current value of a dependency.
__set__
myModule.__set__('dep', mock)
Compatibility alias for rewire.js; returns a revert function since v1.0.0-rc-7.
__RewireAPI__
import { __RewireAPI__ } from 'my-module'; __RewireAPI__.__Rewire__('dep', mock)
Exported as named export and on default export (for non-primitive defaults).
default export rewiring
import DefaultExport from 'my-module'; DefaultExport.__Rewire__('dep', mock)
import * as mod from 'my-module'; mod.default.__Rewire__('dep', mock)
For primitive default exports, methods are not attached; use __RewireAPI__ instead.

Basic configuration and usage of babel-plugin-rewire: define module, rewire function, call, reset.

// babel.config.js module.exports = { plugins: [['babel-plugin-rewire', { 'rewire': { 'exclude': /node_modules/ } }]] }; // myModule.js export function greet(name) { return `Hello ${name}`; } // test.js import myModule from './myModule'; myModule.__Rewire__('greet', (name) => `Hi ${name}`); const result = myModule.greet('World'); console.log(result); // 'Hi World' myModule.__ResetDependency__('greet'); console.log(myModule.greet('World')); // 'Hello World'
Debug
Known issues
breakingPeer dependency @babel/core v7+ required; not compatible with Babel 6.
fix
Install @babel/core: npm install --save-dev @babel/core
affects: >=1.2.0
deprecated__set__ and __get__ are deprecated in favor of __Rewire__ and __GetDependency__.
fix
Use __Rewire__('dep', value) and __GetDependency__('dep') instead.
affects: >=1.0.0
gotchaDefault exports of primitive types (string, number, boolean) do not receive __Rewire__ methods; use __RewireAPI__ instead.
fix
Access via import { __RewireAPI__ } from 'module' or use __RewireAPI__.__Rewire__()
affects: *
gotchaRewiring a named export does not affect other modules that import that same named export.
fix
Only changes the internal reference within the rewired module.
affects: *
gotchaTop-level variable rewiring works only for variables initialized with require() or literals, not for complex expressions.
fix
Refactor complex initializations into separate functions or use __Rewire__ on the entire module export if possible.
affects: *
Errors
Common errors & fixes
__Rewire__ is not a function
Module not transformed by babel-plugin-rewire or imported as CJS before transformation.
fix
Ensure the module is processed by Babel with the plugin. For Node tests, use @babel/register or equivalent.
Cannot find module 'babel-plugin-rewire'
Plugin not installed or missing from node_modules.
fix
Run: npm install --save-dev babel-plugin-rewire
Cannot assign to read only property '__Rewire__' of object '#<Object>'
Using strict mode or frozen object; plugin cannot attach methods to immutable default exports.
fix
Use __RewireAPI__ instead or avoid freezing exports.
Cannot rewire a dependency that is not explicitly imported in module.
Plugin can only rewire dependencies that are statically analyzable in the module source (import/require at top level).
fix
Ensure the dependency is imported at module top level.
Upgrade
Version history
1.2.0latest on npm
Audit
Dependencies
@babel/corerequiredRequired as peer dependency to transform code
Agent activity
14 hits · last 30 days
node
12
OpenAI (training)
1
Resources
babel-plugin-rewire — npm install babel-plugin-rewire · libregistry