1.2.0 • Published 9 years ago
babel-plugin-transform-inline-imports-commonjs v1.2.0
babel-plugin-transform-inline-imports-commonjs
This plugin should be used instead of babel-plugin-transform-es2015-modules-commonjs
Installation
$ npm install babel-plugin-transform-inline-imports-commonjsDetails
This plugin transforms ES modules (import and export), into CommonJS require and module.exports. imports are transformed into lazily loaded memoized requires. So the require call is deferred until the imported identifier is referenced. This allows you to write idiomatic code without the performance costs of loading code up-front (I/O, parsing, and executing).
Transform example
Before:
import bigModule from 'big-module';
export default function(val) {
return bigModule.doExpensiveThing(val);
}After:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (val) {
return (_bigModule || _bigModule2()).default.doExpensiveThing(val);
};
var _bigModule;
function _bigModule2() {
return _bigModule = _interopRequireDefault(require('big-module'));
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }Usage
Configuration
The same settings that are available for babel-plugin-transform-es2015-modules-commonjs are available for babel-plugin-transform-inline-imports-commonjs:
// without options
{
"plugins": ["transform-inline-imports-commonjs"]
}
// with options
{
"plugins": [
["transform-inline-imports-commonjs", {
"allowTopLevelThis": true,
"strict": false,
"loose": true
}]
]
}Additional settings
excludeModules:- An array of strings that correspond to module IDs that should not be "inline-import"'ed. For the config
"excludeModules": ["atom"]:
import {TextEditor} from 'atom'; // transforms to plain `require` with interop import foo from 'bar'; // transforms to inline import- An array of strings that correspond to module IDs that should not be "inline-import"'ed. For the config
excludeNodeBuiltins(default:false)- Do not apply "inline-imports" to Node builtin modules. These modules are usually already in the module cache, so there may be no need to lazily load them.
import * as path from 'path'; // transforms to plain `require` with interop import foo from 'bar'; // transforms to inline import