babel/packages/babel-helper-module-imports
Deven Bansod 8b57a3e3b9 Migrate a few packages' tests to use Jest Expect (see below)
* Migrate the following packages' tests:
    * babel-helper-annotate-as-pure
    * babel-helper-module-imports
    * babel-helper-transform-fixture-test-runner
    * babel-highlight
    * babel-node
    * babel-plugin-transform-modules-commonjs
    * babel-preset-env-standalone
    * babel-preset-env
    * babel-preset-es2015
    * babel-preset-react
    * babel-standalone
    * babel-template
    * babel-traverse
    * babel-types
2018-03-24 16:22:10 +05:30
..
2018-03-15 16:50:03 -04:00

@babel/helper-module-imports

Installation

npm install @babel/helper-module-imports --save

Usage

import "source"

import { addSideEffect } from "@babel/helper-module-imports";
addSideEffect(path, 'source');

import { named } from "source"

import { addNamed } from "@babel/helper-module-imports";
addNamed(path, 'named', 'source');

import { named as _hintedName } from "source"

import { addNamed } from "@babel/helper-module-imports";
addNamed(path, 'named', 'source', { nameHint: "hintedName" });

import _default from "source"

import { addDefault } from "@babel/helper-module-imports";
addDefault(path, 'source');

import hintedName from "source"

import { addDefault } from "@babel/helper-module-imports";
addDefault(path, 'source', { nameHint: "hintedName" })

import * as _namespace from "source"

import { addNamespace } from "@babel/helper-module-imports";
addNamespace(path, 'source');

Examples

Adding a named import

import { addNamed } from "@babel/helper-module-imports";

export default function({ types: t }) {
  return {
    visitor: {
      ReferencedIdentifier(path) {
        let importName = this.importName;
        if (importName) {
          importName = t.cloneDeep(importName);
        } else {
          // require('bluebird').coroutine
          importName = this.importName = addNamed(path, 'coroutine', 'bluebird');
        }

        path.replaceWith(importName);
      }
    },
  };
}