@babel/plugin-transform-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-modules-commonjs
Usage
Via .babelrc (Recommended)
.babelrc
// without options
{
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
// with options
{
"plugins": [
["@babel/plugin-transform-modules-commonjs", {
"allowTopLevelThis": true
}]
]
}
Via CLI
babel --plugins @babel/plugin-transform-modules-commonjs script.js
Via Node API
require("@babel/core").transform("code", {
plugins: ["@babel/plugin-transform-modules-commonjs"]
});
Options
loose
boolean, defaults to false.
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 @babel/plugin-transform-modules-commonjs
and instead of using Object.defineProperty an assignment will be used instead.
var foo = exports.foo = 5;
exports.__esModule = true;
strict
boolean, defaults to false
By default, when using exports with babel a non-enumerable __esModule property
is exported. In some cases this property is used to determine if the import is the
default export or if it contains the default export.
var foo = exports.foo = 5;
Object.defineProperty(exports, "__esModule", {
value: true
});
In order to prevent the __esModule property from being exported, you can set
the strict option to true.
noInterop
boolean, defaults to false
By default, when using exports with babel a non-enumerable __esModule property
is exported. This property is then used to determine if the import is the default
export or if it contains the default export.
"use strict";
var _foo = _interopRequireDefault(require("foo"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
In cases where the auto-unwrapping of default is not needed, you can set the
noInterop option to true to avoid the usage of the interopRequireDefault
helper (shown in inline form above).