
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
babel-plugin-add-module-exports
Advanced tools
Babel@6 doesn't export default module.exports any more - T2212 Kill CommonJS default export behavior.
Babel@6 transforms the following file
export default 'foo'
into
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = 'foo';
Therefore, it is a need to use the ugly .default in node.js.
require('./bundle.js') // { default: 'foo' }
require('./bundle.js').default // 'foo'
This plugin follows the babel@5 behavior - add the module.exports if only the export default declaration exists.
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = 'foo';
module.exports = exports['default'];
Therefore, our old codes still work fine - the .default goes away. :wink:
require('./bundle.js') // foo
Install this plugin from npm:
npm install babel-plugin-add-module-exports --save-dev
# or
yarn add -D babel-plugin-add-module-exports
Write the name to babelrc. It works with preset-env to output CommonJS code:
{
"presets": ["@babel/env"],
"plugins": ["add-module-exports"]
}
However, the plugin doesn't change the pure-esmodule.
this plugin makes changes only when exists exports.default (in other words, using commonjs).
{
"presets": [["@babel/env", { "modules": false }]],
"plugins": ["add-module-exports"]
}
into
export default 'foo'
1.0.0 Currently support is commonjs and umd.
Doesn't support amd, systemjs modules(don't use. there are no plans to support at the moment).
Likewise, webpack doesn't perform commonjs transformation for codesplitting. Need to set commonjs conversion.
{
"presets": [["@babel/env", { "modules": "commonjs" }]],
"plugins": ["add-module-exports"]
}
addDefaultPropertyIf you're exporting an object and wish to maintain compatibility with code using the require('./bundle.js').default syntax, you can optionally enable the addDefaultProperty option as follows:
{
"presets": ["env"],
"plugins": [
[
"add-module-exports",
{
"addDefaultProperty": true
}
]
]
}
This will cause a second line of code to be added which aliases the default name to the exported object like so:
module.exports = exports['default'];
module.exports.default = exports['default']
This package transforms ES6 module syntax to CommonJS. While it doesn't specifically add module.exports, it converts import/export statements to require/module.exports, providing broader compatibility with CommonJS.
FAQs
Fix babel/babel#2212
The npm package babel-plugin-add-module-exports receives a total of 1,138,928 weekly downloads. As such, babel-plugin-add-module-exports popularity was classified as popular.
We found that babel-plugin-add-module-exports demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 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
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.