or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdplugin-configuration.mdruntime-api.md
tile.json

plugin-configuration.mddocs/

Plugin Configuration

Configuration options and usage patterns for the babel-plugin-rewire Babel plugin, including setup methods and advanced options.

Capabilities

Plugin Installation and Setup

/**
 * Install babel-plugin-rewire via npm
 */
// Terminal command:
// npm install babel-plugin-rewire

Babel Configuration Methods

Via .babelrc file

{
  "plugins": ["babel-plugin-rewire"]
}

Via babel.config.js

module.exports = {
  plugins: ["babel-plugin-rewire"]
};

Via package.json

{
  "babel": {
    "plugins": ["babel-plugin-rewire"]
  }
}

Command Line Usage

Basic CLI Usage

# Using short name
babel --plugins rewire src --out-dir lib

# Using full plugin name
babel --plugins babel-plugin-rewire src --out-dir lib

JavaScript API Usage

Babel Core Transform

/**
 * 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"]
});

Require Hook Usage

/**
 * Register babel-plugin-rewire with babel-register
 */
require('babel-register')({
  plugins: ['babel-plugin-rewire']
});

Build Tool Integration

Webpack Configuration

// 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'
}

Browserify/Babelify Configuration

/**
 * 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')]
  })
);

Plugin Options

Ignored Identifiers

/**
 * 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

Environment-Specific Configuration

Test Environment Only

{
  "env": {
    "test": {
      "plugins": ["babel-plugin-rewire"]
    }
  }
}

Usage:

NODE_ENV=test babel src --out-dir lib

Integration with Other Tools

Istanbul Coverage

{
  "plugins": ["istanbul", "babel-plugin-rewire"]
}

Note: Plugin order matters - istanbul should come before rewire.

Flow Type Checking

{
  "plugins": [
    "babel-plugin-syntax-flow",
    "babel-plugin-transform-flow-strip-types",
    "babel-plugin-rewire"
  ]
}

Types

/**
 * 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;
}