2.7 KiB
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.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.