local_fire_departmentHoneystax
search⌘K
loginLog Inperson_addSign Up
layers
HONEYSTAX TERMINAL v1.0
HomeNewsSavedSubmit
Back to the live board
B

babel-plugin-add-module-exports

Plugin

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

Copy the install, test the workflow, then decide if it earns a permanent slot.

723
Why nowLower urgency

The signal is softer here. Treat it like a pattern source unless it solves a very specific gap.

DecisionHigh-conviction move

Copy the install, test the workflow, then decide if it earns a permanent slot.

Trial costFast eval

You can test this quickly and remove it cleanly if it misses.

Risk65/100

GitHub health 28/100. no security policy. 33 open issues plus stale maintenance signal push this into high-risk adoption territory.

What You Are Adopting

AI Agent

Universal

Model

Multiple

Build Time

Instant

Test This In Your Stack

One command inClean rollbackLow commitment
folderLocalClones to current directory. Delete the folder to remove.

Fastest way to find out if babel-plugin-add-module-exports belongs in your setup.

Copy the install command, run a real test, and back it out cleanly if it slows you down.

Try now
git clone https://github.com/59naga/babel-plugin-add-module-exports && cd babel-plugin-add-module-exports && cat README.md

Run this first. You will know quickly if the workflow earns a permanent slot.

Back out
rm -rf babel-plugin-add-module-exports

No messy cleanup loop. If it misses, remove it and keep moving.

Install Location

./  └─ babel-plugin-add-module-exports/ ← clones here

About

【v0.2 no longer maintained】 Fix babel/babel#2212 - Follow the babel@5 behavior for babel@6. An open-source plugin for the AI coding ecosystem.

README

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

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

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

Usage

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"]
}

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

{
  "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).

with Webpack

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

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

{
  "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']

See also

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

License

MIT

Tech Stack

Webpack

Installation

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 " ] }

Open Live ProjectAudit Repo

Reviews0

Log in to write a review.

StaleLast commit 41mo ago
bug_report33open issues
Submitted November 10, 2015

auto_awesomeYour strongest next moves after babel-plugin-add-module-exports