Socket
Socket
Sign inDemoInstall

babel-plugin-transform-es2015-modules-commonjs

Package Overview
Dependencies
26
Maintainers
6
Versions
59
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    babel-plugin-transform-es2015-modules-commonjs

This plugin transforms ES2015 modules to CommonJS


Version published
Weekly downloads
1.5M
decreased by-18.06%
Maintainers
6
Install size
4.38 MB
Created
Weekly downloads
 

Package description

What is babel-plugin-transform-es2015-modules-commonjs?

The babel-plugin-transform-es2015-modules-commonjs npm package is a plugin for Babel that transforms ECMAScript 2015 modules to CommonJS syntax. This allows developers to write their JavaScript code using the ES2015 module syntax and then compile it down to a format that is compatible with environments that only support CommonJS modules, such as Node.js.

What are babel-plugin-transform-es2015-modules-commonjs's main functionalities?

Transform ES2015 import statements to CommonJS require

This feature allows developers to use the ES2015 import syntax and have it compiled into CommonJS require statements.

import { square } from './math';
// Transforms to:
var _math = require('./math');
var square = _math.square;

Transform ES2015 export statements to CommonJS exports

This feature enables the use of ES2015 export syntax which is then compiled into CommonJS exports.

export const square = (n) => n * n;
// Transforms to:
exports.square = (n) => n * n;

Other packages similar to babel-plugin-transform-es2015-modules-commonjs

Readme

Source

babel-plugin-transform-es2015-modules-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.

Example

In

export default 42;

Out

Object.defineProperty(exports, "__esModule", {
  value: true
});

exports.default = 42;

Installation

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

Usage

.babelrc

// without options
{
  "plugins": ["transform-es2015-modules-commonjs"]
}

// with options
{
  "plugins": [
    ["transform-es2015-modules-commonjs", {
      "allowTopLevelThis": true
    }]
  ]
}

Via CLI

babel --plugins transform-es2015-modules-commonjs script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-es2015-modules-commonjs"]
});

Options

loose

boolean, 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;

strict

boolean, 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.

noInterop

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

Keywords

FAQs

Last updated on 26 Apr 2018

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc