react-scripts
Version:
Configuration and scripts for Create React App.
179 lines (127 loc) • 5.02 kB
Markdown
for all environments.
[

We run the script [build-data.js](/scripts/build-data.js) which creates [plugins.json](/data/plugins.json).
This should be straightforward to do in most cases. There might be cases were plugins should be split up more. Currently located at [pluginFeatures.js](/data/pluginFeatures.js).
[
If you are targeting IE 8 and Chrome 55 it will include all plugins required by IE 8 since you would need to support both still.
[
```sh
$ npm install --save-dev babel-preset-env
```
* `targets` - an object of browsers/environment versions to support (ex: chrome, node, etc).
The data for this is currently at: [/data/plugins.json](/data/plugins.json) and being generated by [/scripts/build-data.js](/scripts/build-data.js) using https://kangax.github.io/compat-table.
> We would like help to make sure the data is correct! This just means usage/testing!
Currently: "chrome, edge, firefox, safari, node"
> Some node features are > `6.5`.
* `browsers` (array/string) - an query to select browsers (ex: last 2 versions, > 5%).
> Note, browsers' results are overridden by explicit items from `targets`.
> If your config is a js file, also do `"node": parseFloat(process.versions.node)`
* `loose` (boolean) - Enable "loose" transformations for any plugins in this preset that allow them (Disabled by default).
* `modules` - Enable transformation of ES6 module syntax to another module type (Enabled by default to `"commonjs"`).
* Can be `false` to not transform modules, or one of `["amd", "umd", "systemjs", "commonjs"]`.
* `debug` (boolean) - `console.log` out the targets and plugins being used as well as the version specified in `/data/plugins.json`.
```js
{
"presets": [
["env", {
"targets": {
"chrome": 52,
"browsers": "last 2 safari versions"
},
"loose": true,
"modules": false
}]
]
}
```
```js
// src
export class A {}
```
```js
// default is to run all transforms
{
"presets": [
["env", {}]
]
}
// ...
var A = exports.A = function A() {
_classCallCheck(this, A);
};
```
```js
// target chrome 52
{
"presets": [
["env", {
"targets": {
"chrome": 52
}
}]
]
}
// ...
class A {}
exports.A = A;
```
```js
// target chrome 52 with webpack 2/rollup
{
"presets": [
["env", {
"targets": {
"chrome": 52
},
"modules": false
}]
]
}
// ...
export class A {}
```
```js
// using browserslist
{
"presets": [
["env", {
"targets": {
"chrome": 52,
"browsers": ["last 2 versions", "safari 7"]
}
}]
]
}
// ...
export var A = function A() {
_classCallCheck(this, A);
};
```
```js
Using targets: {
"node": 6.5
}
Using plugins:
module: false
transform-exponentiation-operator {}
transform-async-to-generator {}
syntax-trailing-function-commas {}
```
You may get a `SyntaxError: Unexpected token ...` error if using the [object-rest-spread](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-object-rest-spread) feature and targeting node.js 6.5 or higher.
This is a known issue at [babel/babel
A simple workaround would be to re-enable the following plugins: `babel-plugin-transform-es2015-destructuring` and `babel-plugin-transform-es2015-parameters`.
> Babel preset