Skip to content

jshanson7/babel-resolver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Babel Resolver NPM version Build status Coverage status

Resolve modules from any directory.

import User from '../../models/User';

Becomes:

import User from 'models/User';

Usage

In app/index.js:

require('babel-register')({
  presets: ['es2015'], // required for 'import'
  resolveModuleSource: require('babel-resolver')(__dirname)
});

require('./app');

In app/app.js:

import User from 'models/User';
// => resolves: "app/models/User.js"

This example uses Babel 6 and babel-register.

If you wish to define options in .babelrc, use the Babel Resolver Plugin instead.

Note: Run rm -rf ~/.babel.json if you're seeing errors.

Note2: Babel's resolveModuleSource is only called when you use import, not require.

Also, keep in mind that you must provide absolute directory paths to babel-resolver.

Resolving Multiple Directories

In app/index.js:

var path = require('path');
var localModulesDir = __dirname;
var anotherDirToCheck = path.resolve(__dirname, 'lib');

require('babel-register')({
  presets: ['es2015'],
  resolveModuleSource: require('babel-resolver')(localModulesDir, anotherDirToCheck)
});
require('./app');

In app/app.js:

import User from 'models/User';
// => resolves: "app/models/User.js"

import somethingInLib from 'somethingInLib';
// => resolves: "app/lib/somethingInLib.js"

Installation

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

Why not just set NODE_PATH?

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