Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

ES Module Loader Node resolution implementation with CJS interop

Notifications You must be signed in to change notification settings

ModuleLoader/node-es-module-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NodeJS ES Module Loader

Loads ES modules with CJS interop in Node according to https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md.

Follows the NodeJS resolution algorithm, loading modules first as CJS and then falling back to ES on import or export syntax failures. This effectively provides the "export {}" assumption to load an ES module.

Built with the ES Module Loader polyfill 1.0 branch at https://github.com/ModuleLoader/es-module-loader.

Installation

npm install node-es-module-loader

Usage

Execute an ES module file:

node_modules/.bin/node-esml module.js

For example, where module.js contains:

import fs from 'fs';
import {fn} from './local-es-module.js';

Note that only the default import form for CommonJS modules is supported.

Also supports dynamic loading via a loader global (note that this will change in future when the dynamic loader spec is available);

export function lazyLoad(path) {
  return loader.import(path);
}

Source maps also work in Node 6 with the node --inspect flag via:

node --inspect node_modules/.bin/node-esml module.js

Programmatic Usage

var NodeESModuleLoader = require('node-es-module-loader');

var loader = new NodeESModuleLoader(/* optional basePath */);

loader.import('x').then(function(m) {
  // ...
});

Caveats

Alternative Babel options can be set with a local .babelrc file.

LICENSE

MIT

About

ES Module Loader Node resolution implementation with CJS interop

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •