
Product
Introducing Reachability for PHP
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.
babel-plugin-transform-es2015-modules-commonjs
Advanced tools
This plugin transforms ES2015 modules to CommonJS
This plugin transforms ES2015 modules to CommonJS.
Babel 6 Changes
Babel 6 changed some behavior by not doing
module.exports = exports['default']anymore in the modules transforms.There are some caveats, but you can use babel-plugin-add-module-exports, so that updating to Babel 6 isn't a breaking change since users that don't use ES modules don't have to do
require("your-module").default.However, it may not match how Node eventually implements ES modules natively given the the current proposal.
In
export default 42;
Out
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = 42;
npm install --save-dev babel-plugin-transform-es2015-modules-commonjs
.babelrc (Recommended).babelrc
// without options
{
"plugins": ["transform-es2015-modules-commonjs"]
}
// with options
{
"plugins": [
["transform-es2015-modules-commonjs", {
"allowTopLevelThis": true
}]
]
}
babel --plugins transform-es2015-modules-commonjs script.js
require("babel-core").transform("code", {
plugins: ["transform-es2015-modules-commonjs"]
});
looseboolean, 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 babel-plugin-transform-es2015-modules-commonjs
and instead of using Object.defineProperty an assignment will be used instead.
var foo = exports.foo = 5;
exports.__esModule = true;
strictboolean, 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.
noInteropboolean, 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 = require("foo");
var _foo2 = _interopRequireDefault(_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).
This package is the evolution of babel-plugin-transform-es2015-modules-commonjs and is maintained by the Babel team. It provides similar functionality but is updated to work with newer versions of Babel and may include additional optimizations and features.
The esm package is a lightweight runtime that allows you to load ES modules in Node.js without any compilation step. It differs from babel-plugin-transform-es2015-modules-commonjs in that it doesn't transform the code but rather enables an environment where ES modules can be used natively.
FAQs
This plugin transforms ES2015 modules to CommonJS
The npm package babel-plugin-transform-es2015-modules-commonjs receives a total of 1,447,032 weekly downloads. As such, babel-plugin-transform-es2015-modules-commonjs popularity was classified as popular.
We found that babel-plugin-transform-es2015-modules-commonjs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.

Product
Export Socket alert data to your own cloud storage in JSON, CSV, or Parquet, with flexible snapshot or incremental delivery.

Research
/Security News
Bitwarden CLI 2026.4.0 was compromised in the Checkmarx supply chain campaign after attackers abused a GitHub Action in Bitwarden’s CI/CD pipeline.