diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/@babel/preset-env/CONTRIBUTING.md | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/@babel/preset-env/CONTRIBUTING.md')
| -rw-r--r-- | node_modules/@babel/preset-env/CONTRIBUTING.md | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/@babel/preset-env/CONTRIBUTING.md b/node_modules/@babel/preset-env/CONTRIBUTING.md new file mode 100644 index 00000000..5b485a69 --- /dev/null +++ b/node_modules/@babel/preset-env/CONTRIBUTING.md @@ -0,0 +1,93 @@ +# Contributing + +## Adding a new plugin to support (when approved in the next ECMAScript version) + +### Update [`plugin-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/plugin-features.js) + +*Example:* + +If you were going to add `**` which is in ES2016: + +Find the relevant entries on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-exponentiation_(**)_operator): + +`exponentiation (**) operator` + +Find the corresponding babel plugin: + +`@babel/plugin-transform-exponentiation-operator` + +And add them in this structure: + +```js +// es2016 +"@babel/plugin-transform-exponentiation-operator": { + features: [ + "exponentiation (**) operator", + ], +}, +``` + +### Update [`built-in-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/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](https://kangax.github.io/compat-table/es2016plus/#test-Object_static_methods_Object.values) +and split it with `/`: + +`Object static methods / Object.values` + +Find the corresponding module on [core-js](https://github.com/zloirock/core-js/tree/master/modules): + +`es7.object.values.js` + +Find required ES version in [`built-in-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/built-in-features.js) and add the new feature: + +```js +const es2017 = { + //... + "es7.object.values": "Object static methods / Object.values" +} +``` + +### Update [`plugins.json`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/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 + +```bash +npm test +``` + +### Checking code coverage locally + +```bash +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](https://github.com/babel/babel/blob/master/CONTRIBUTING.md#babel-plugin-x). + +#### 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. |
