Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
babel-plugin-add-module-exports
Advanced tools
The babel-plugin-add-module-exports package is a Babel plugin that modifies the behavior of ES6 module exports to add a module.exports property. This is particularly useful for compatibility with CommonJS modules.
Add module.exports to ES6 exports
This feature ensures that the default export of an ES6 module is also available as a CommonJS module export. This is useful for projects that need to support both ES6 and CommonJS module systems.
module.exports = 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.
Add module.exports
Fix Kill CommonJS default export behaviour - babel/babel#2212
npm install babel-plugin-add-module-exports --save-dev
babel-plugin-transform-es2015-modules-commonjs@6.1.3 doesn't support the module.exports
.
// index.js
let foo= 'bar'
export default 'baz'
export {foo}
npm install babel-core@6.1.2 --global
npm install babel-preset-es2015 --save-dev
npm install babel-plugin-transform-es2015-modules-commonjs --save-dev
babel index.js --presets es2015 --plugins transform-es2015-modules-commonjs > bundle.js
# 'use strict';
#
# Object.defineProperty(exports, "__esModule", {
# value: true
# });
# var foo = 'bar';
# exports.default = 'baz';
# exports.foo = foo;
Therefore, need to use the .default
at NodeJS.
require('./bundle.js') // { default: 'baz', foo: 'bar' }
require('./bundle.js').default // 'baz'
The babel-plugin-add-module-exports
add the module.exports
to EOF.
npm install babel-plugin-add-module-exports --save-dev
babel index.js --presets es2015 --plugins add-module-exports > bundle.js
# 'use strict';
#
# Object.defineProperty(exports, "__esModule", {
# value: true
# });
# var foo = 'bar';
# exports.default = 'baz';
# exports.foo = foo;
# module.exports = Object.assign(exports.default, exports);
Therefore, .default
is the unnecessary.
require('./bundle.js') // { [String: 'baz'] default: 'baz', foo: 'bar' }
require('./bundle.js')+'' // baz
Object.assign
?See also babel-plugin-transform-object-assign.
example:
npm install babel-plugin-transform-object-assign --save-dev
babel index.js --presets es2015 --plugins add-module-exports,transform-object-assign > bundle.js
# 'use strict';
#
# var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
#
# Object.defineProperty(exports, "__esModule", {
# value: true
# });
# var foo = 'bar';
# exports.default = 'baz';
# exports.foo = foo;
# module.exports = _extends(exports.default, exports);
FAQs
Fix babel/babel#2212
The npm package babel-plugin-add-module-exports receives a total of 0 weekly downloads. As such, babel-plugin-add-module-exports popularity was classified as not 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.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.