Resolve modules from any directory.
import User from '../../models/User';
Becomes:
import User from 'models/User';
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
.
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"
npm i babel-plugin-resolver --save
rm -f ~/.babel.json
While setting NODE_PATH=app
is a perfectly valid solution, babel-resolver
is more explicit and lets you avoid mucking around with environment variables.
MIT