Contributing
Adding a new plugin 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:
transform-exponentiation-operator
And add them in this structure:
// es2016
"transform-exponentiation-operator": {
  features: [
    "exponentiation (**) operator",
  ],
},
Update built-in-features.js
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:
es7.object.values.js
Find required ES version in built-in-features.js and add the new feature:
const es2017 = {
  //...
  "es7.object.values": "Object static methods / Object.values"
}
Update plugins.json
Until compat-table is a standalone npm module for data we are using the git url
"compat-table": "kangax/compat-table#[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 locally
npm test
Checking code coverage locally
npm run coverage
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.jsonfile (just as the other tests, this is essentially a.babelrc) with the desired test configuration (required) - Add a 
stdout.txtfile with the expected debug output. For added convenience, if there is nostdout.txtpresent, the test runner will generate one for you.