Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
B

babel-plugin-add-module-exports

> 编程语言
Open source

【v0.2 no longer maintained】 Fix babel/babel#2212 - Follow the babel@5 behavior for babel@6

722 stars0 likes2 views
WebsiteGitHub

About

【v0.2 no longer maintained】 Fix babel/babel#2212 - Follow the babel@5 behavior for babel@6

babel-plugin-add-module-exports

Why?

Babel@6 doesn't export default module.exports any more - T2212 Kill CommonJS default export behavior.

Babel@6 transforms the following file

javascript
export default 'foo'

into

javascript
'use strict';
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = 'foo';

Therefore, it is a need to use the ugly .default in node.js.

javascript
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.

javascript
'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:

javascript
require('./bundle.js') // foo

Usage

Install this plugin from npm:

bash
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:

json
{
  "presets": ["@babel/env"],
  "plugins": ["add-module-exports"]
}

modules: false

However, the plugin doesn't change the pure-esmodule. this plugin makes changes only when exists exports.default (in other words, using commonjs).

json
{
  "presets": [["@babel/env", { "modules": false }]],
  "plugins": ["add-module-exports"]
}

into

javascript
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).

with Webpack

Likewise, webpack doesn't perform commonjs transformation for codesplitting. Need to set commonjs conversion.

json
{
  "presets": [["@babel/env", { "modules": "commonjs" }]],
  "plugins": ["add-module-exports"]
}

Options

addDefaultProperty

If 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:

json
{
  "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:

javascript
module.exports = exports['default'];
module.exports.default = exports['default']

See also

  • babel-plugin-experimental-syntax-dynamic-import

License

MIT

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

JavaScriptbabel-plugin

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言