babel-plugin-resolver

Resolve modules from any directory.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
babel-plugin-resolver
8721.1.06 years ago7 years agoMinified + gzip package size for babel-plugin-resolver in KB

Readme

Resolve modules from any directory.
import User from '../../models/User';
Becomes:
import User from 'models/User';

Usage

npm i babel-plugin-resolver --save
rm -rf ~/.babel.json

In .babelrc:
{
  "presets": ["es2015"],
  "plugins": [["resolver", {"resolveDirs": ["src"]}]]
}

Given the directory structure:
/app
  .babelrc
  /src
    /models
      User.js
    /controllers
      User.js

In app/controllers/User.js:
import UserModel from 'models/User';
// => resolves: "app/src/models/User.js"

This example uses Babel 6.
Note: Run rm -rf ~/.babel.json if you're seeing errors.
Note2: This plugin is only called when you use import, not require.

Resolving Multiple Directories

In .babelrc:
{
  "presets": ["es2015"],
  "plugins": [["resolver", {"resolveDirs": ["src", "src/lib"]}]]
}

Given the directory structure:
/app
  .babelrc
  /src
    /models
      User.js
    /controllers
      User.js
    /lib
      utils.js

In app/controllers/User.js:
import UserModel from 'models/User';
// => resolves: "app/src/models/User.js"
import utils from 'utils';
// => resolves: "app/src/lib/utils.js"

Installation

npm i babel-plugin-resolver --save
rm -f ~/.babel.json

Why not just set NODEPATH?

While setting NODE_PATH=app is a perfectly valid solution, babel-resolver is more explicit and lets you avoid mucking around with environment variables.

License

MIT