Configuration options and usage patterns for the babel-plugin-rewire Babel plugin, including setup methods and advanced options.
/**
* Install babel-plugin-rewire via npm
*/
// Terminal command:
// npm install babel-plugin-rewire{
"plugins": ["babel-plugin-rewire"]
}module.exports = {
plugins: ["babel-plugin-rewire"]
};{
"babel": {
"plugins": ["babel-plugin-rewire"]
}
}# Using short name
babel --plugins rewire src --out-dir lib
# Using full plugin name
babel --plugins babel-plugin-rewire src --out-dir lib/**
* Transform code using babel-core with rewire plugin
*/
const babel = require("babel-core");
// Using short name
const result = babel.transform(code, {
plugins: ["rewire"]
});
// Using full plugin name
const result = babel.transform(code, {
plugins: ["babel-plugin-rewire"]
});/**
* Register babel-plugin-rewire with babel-register
*/
require('babel-register')({
plugins: ['babel-plugin-rewire']
});// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
options: {
plugins: ['babel-plugin-rewire']
}
}
]
}
};
// Or inline loader
{
test: /src\/js\/.+\.js$/,
loader: 'babel-loader?plugins=babel-plugin-rewire'
}/**
* Configure babel-plugin-rewire with Browserify and Babelify
*/
const browserify = require('browserify');
const babelify = require('babelify');
const bundler = browserify({
entries: ['src/index.js']
}).transform(
babelify.configure({
plugins: [require('babel-plugin-rewire')]
})
);/**
* Configure identifiers to ignore during transformation
*/
// .babelrc with options
{
"plugins": [
["babel-plugin-rewire", {
"ignoredIdentifiers": ["console", "process", "global"]
}]
]
}
// babel.config.js with options
module.exports = {
plugins: [
["babel-plugin-rewire", {
ignoredIdentifiers: ["console", "process", "global"]
}]
]
};Usage Example:
// Without ignoredIdentifiers - console would be rewireable
console.log('Hello'); // This could be rewired
// With ignoredIdentifiers: ["console"]
console.log('Hello'); // This will NOT be rewired{
"env": {
"test": {
"plugins": ["babel-plugin-rewire"]
}
}
}Usage:
NODE_ENV=test babel src --out-dir lib{
"plugins": ["istanbul", "babel-plugin-rewire"]
}Note: Plugin order matters - istanbul should come before rewire.
{
"plugins": [
"babel-plugin-syntax-flow",
"babel-plugin-transform-flow-strip-types",
"babel-plugin-rewire"
]
}/**
* Plugin options interface
*/
interface PluginOptions {
/** Array of identifier names to ignore during transformation */
ignoredIdentifiers?: string[];
}
/**
* Babel plugin function signature
*/
type BabelPlugin = ({ types: t, template }: BabelAPI) => {
visitor: VisitorObject;
};
/**
* Babel API object provided to plugin
*/
interface BabelAPI {
types: BabelTypes;
template: TemplateFunction;
}