Skip to content

Files

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Latest commit

author
Gunnar Gabrielson
Mar 12, 2020
ae63fba · Mar 12, 2020

History

History
98 lines (72 loc) · 2.11 KB

plugin-syntax-dynamic-import.md

File metadata and controls

98 lines (72 loc) · 2.11 KB
Error in user YAML: (<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 8
---
id: babel-plugin-syntax-dynamic-import
title: @babel/plugin-syntax-dynamic-import
sidebar_label: syntax-dynamic-import
---

@babel/plugin-syntax-dynamic-import is needed to enable support for parsing import()

This plugin is enabled by default since Babel 7.8.0, so you shouldn't need to enable this plugin separately.

Usage notes:

  1. If you are using @babel/preset-env, it's automatically handled
  2. If you are using Webpack or Rollup, you shouldn't transpile import() with Babel and let the bundler handle it for you
  3. Otherwise, you need @babel/plugin-proposal-dynamic-import

Installation

npm install --save-dev @babel/plugin-syntax-dynamic-import

Usage

With a configuration file (Recommended)

{
  "plugins": ["@babel/plugin-syntax-dynamic-import"]
}

Via CLI

babel --plugins @babel/plugin-syntax-dynamic-import script.js

Via Node API

require("@babel/core").transform("code", {
  plugins: ["@babel/plugin-syntax-dynamic-import"],
});

Working with Webpack and @babel/preset-env

Currently, @babel/preset-env is unaware that using import() with Webpack relies on Promise internally. Environments which do not have builtin support for Promise, like Internet Explorer, will require both the promise and iterator polyfills be added manually.

For example, with core-js@3:

// webpack config
const config = {
  entry: [
    "core-js/modules/es.promise",
    "core-js/modules/es.array.iterator",
    path.resolve(__dirname, "src/main.js"),
  ],
  // ...
};

or

// src/main.js
import "core-js/modules/es.promise";
import "core-js/modules/es.array.iterator";

// ...

This is the same for core-js@2, except the imports paths are slightly different:

// webpack config
const config = {
  entry: [
    "core-js/modules/es6.promise",
    "core-js/modules/es6.array.iterator",
    path.resolve(__dirname, "src/main.js"),
  ],
  // ...
};

or

// src/main.js
import "core-js/modules/es6.promise";
import "core-js/modules/es6.array.iterator";

// ...