The intent of this option is to toggle module interop behavior. When `true` no `interopRequireXXX` helper invocations will be emitted. (cherry picked from commit 0d1edb9811694d25df2ef75a1e8de773624ec6b8)
babel-plugin-transform-es2015-modules-commonjs
This plugin transforms ES2015 modules to CommonJS.
Example
In
export default 42;
Out
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = 42;
Installation
npm install --save-dev babel-plugin-transform-es2015-modules-commonjs
Usage
Via .babelrc (Recommended)
.babelrc
// without options
{
"plugins": ["transform-es2015-modules-commonjs"]
}
// with options
{
"plugins": [
["transform-es2015-modules-commonjs", {
"allowTopLevelThis": true
}]
]
}
Via CLI
babel --plugins transform-es2015-modules-commonjs script.js
Via Node API
require("babel-core").transform("code", {
plugins: ["transform-es2015-modules-commonjs"]
});
Options
loose
boolean, defaults to false.
As per the spec, import and export are only allowed to be used at the top
level. When in loose mode these are allowed to be used anywhere.
And by default, when using exports with babel a non-enumerable __esModule property
is exported.
var foo = exports.foo = 5;
Object.defineProperty(exports, "__esModule", {
value: true
});
In environments that don't support this you can enable loose mode on es6.modules
and instead of using Object.defineProperty an assignment will be used instead.
var foo = exports.foo = 5;
exports.__esModule = true;