or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

tessl/npm-babel-plugin-dynamic-import-node

Babel plugin to transpile import() to a deferred require(), for node

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/babel-plugin-dynamic-import-node@2.3.x

To install, run

npx @tessl/cli install tessl/npm-babel-plugin-dynamic-import-node@2.3.0

index.mddocs/

Babel Plugin Dynamic Import Node

babel-plugin-dynamic-import-node is a Babel plugin that transforms ES2015+ dynamic import() statements into deferred require() calls for Node.js environments. It enables developers to use modern dynamic import syntax while maintaining compatibility with Node.js runtime that doesn't natively support ES modules.

Package Information

  • Package Name: babel-plugin-dynamic-import-node
  • Package Type: npm
  • Language: JavaScript
  • Installation: npm install babel-plugin-dynamic-import-node --save-dev

Core Imports

This is a Babel plugin, not a library for direct import. It's used via Babel configuration:

// In .babelrc or babel.config.js
{
  "plugins": ["dynamic-import-node"]
}
// If accessing the plugin programmatically (rare)
const plugin = require('babel-plugin-dynamic-import-node');

Basic Usage

Via .babelrc (Recommended)

{
  "plugins": ["dynamic-import-node"]
}

With Configuration Options

{
  "plugins": [
    ["dynamic-import-node", { "noInterop": true }]
  ]
}

Via Babel CLI

babel --plugins dynamic-import-node script.js

Via Node API

require('babel-core').transform('code', {
  plugins: ['dynamic-import-node']
});

Transformation Example

Input code with dynamic import:

Promise.all([
  import('./lib/import1'),
  import('./lib/import2')
]).then(([Import1, Import2]) => {
  console.log(Import1);
  console.log(Import2);
});

Output code (transformed):

Promise.all([
  Promise.resolve().then(() => _interopRequireWildcard(require('./lib/import1'))),
  Promise.resolve().then(() => _interopRequireWildcard(require('./lib/import2')))
]).then(([Import1, Import2]) => {
  console.log(Import1);
  console.log(Import2);
});

Capabilities

Main Plugin Factory

The default export is a Babel plugin factory function that transforms dynamic import() statements.

/**
 * Main Babel plugin factory function (default export)
 * @param {Object} api - Babel API object containing template and types
 * @returns {Object} Babel plugin configuration object
 */
function plugin(api);

The returned plugin object contains:

  • manipulateOptions(opts, parserOpts) - Adds 'dynamicImport' parser plugin
  • visitor.Import(path) - AST visitor that transforms import() calls

Plugin Configuration Options

The plugin accepts an options object when configured:

// Plugin options interface
interface PluginOptions {
  /** If true, will not interop the require calls. Avoids using require('module').default on CommonJS modules */
  noInterop?: boolean;
}

Usage:

{
  "plugins": [
    ["dynamic-import-node", { "noInterop": true }]
  ]
}

Dependencies

  • object.assign (^4.1.0) - Used for polyfill support