Contributing
Adding a new plugin to support (when approved in the next ECMAScript version)
plugin-features.js
Update 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",
],
},
built-in-features.js
Update 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"
}
plugins.json
Update 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.
debug
option
Testing the 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 nostdout.txt
present, the test runner will generate one for you.