You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.6 KiB

Contributing

Adding a new plugin or polyfill to support (when approved in the next ECMAScript version)

Update plugin-features.js

Example:

If you were going to add ** which is in ES2016:

Find the relevant entries on compat-table:

exponentiation (**) operator

Find the corresponding babel plugin:

@babel/plugin-transform-exponentiation-operator

And add them in this structure:

// es2016
"@babel/plugin-transform-exponentiation-operator": {
  features: [
    "exponentiation (**) operator",
  ],
},

Update data for core-js@2 polyfilling

Example:

In case you want to add Object.values which is in ES2017:

Find the relevant feature and subfeature on compat-table and split it with /:

Object static methods / Object.values

Find the corresponding module on core-js@2:

es7.object.values.js

Find required ES version in corejs2-built-in-features.js and add the new feature:

const es = {
  //...
  "es7.object.values": "Object static methods / Object.values"
}

If you want to transform a new built-in by useBuiltIns: 'usage', add mapping to related core-js modules to this file.

Update data for core-js@3 polyfilling

Just update the version of core-js-compat in dependencies.

If you want to transform a new built-in by useBuiltIns: 'usage', add mapping to related core-js modules to this file.

If you want to mark a new proposal as shipped, add it to this list.

Update plugins.json

Until compat-table is a standalone npm module for data we are using the git commit in packages/babel-compat-data/scripts/download-compat-table.sh

COMPAT_TABLE_COMMIT=[latest-commit-hash],

So we update and then run npm run build-data. If there are no changes, then plugins.json will be the same.

Tests

Running tests

See general CONTRIBUTING.md.

Writing tests

General

All the tests for @babel/preset-env exist in the test/fixtures folder. The test setup and conventions are exactly the same as testing a Babel plugin, so please read our documentation on writing tests.

Testing the debug option

Testing debug output to stdout is similar. Under the test/debug-fixtures, create a folder with a descriptive name of your test, and add the following:

  • Add a options.json file (just as the other tests, this is essentially a .babelrc) with the desired test configuration (required)
  • Add a stdout.txt file with the expected debug output. For added convenience, if there is no stdout.txt present, the test runner will generate one for you.