Blame view

node_modules/babel-preset-env/CONTRIBUTING.md 2.68 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  # Contributing
  
  ## Adding a new plugin to support (when approved in the next ECMAScript version)
  
  ### Update [`plugin-features.js`](https://github.com/babel/babel-preset-env/blob/master/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:
  
  `transform-exponentiation-operator`
  
  And add them in this structure:
  
  ```js
  // es2016
  "transform-exponentiation-operator": {
    features: [
      "exponentiation (**) operator",
    ],
  },
  ```
  
  ### Update [`built-in-features.js`](https://github.com/babel/babel-preset-env/blob/master/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-preset-env/blob/master/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-preset-env/blob/master/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.