bable 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。
bable配置比webpack简单很多,webpack里面的`bable-loader`就是用来调用babel的。
bable的配置文件叫做`.bablerc`。babel主要有`env`配置和`plugins`配置。
env配置主要配置各种presets,plugins配置主要配置插件。
*****
### env:
以下为bable 7的env:
![](https://box.kancloud.cn/3a5ecb5d9acc5d7a629a99a0fa979600_236x470.png)
以下为bable 6的env:
![](https://box.kancloud.cn/e59481a63449112cb01aba88f3a6135c_252x672.png)
其中stage-x表示ES提案到什么阶段,最新的bable不支持stage-x的env,转而使用`plugin-proposal-x`.
[https://segmentfault.com/a/1190000016541105](https://segmentfault.com/a/1190000016541105)
[https://www.vanadis.cn/2017/03/18/babel-stage-x/](https://www.vanadis.cn/2017/03/18/babel-stage-x/)
真实配置文件如下:
```js
{
"comments": false,
"env": {
"test": {
"presets": [
["env", {
"targets": { "node": 7 }
}],
"stage-0"
],
"plugins": ["istanbul"]
},
"main": {
"presets": [
["env", {
"targets": { "node": 7 }
}],
"stage-0"
]
},
"renderer": {
"presets": [
["env", {
"modules": false
}],
"stage-0"
]
},
"web": {
"presets": [
["env", {
"modules": false
}],
"stage-0"
]
}
},
"plugins": ["transform-runtime"]
}
```
其中,env的test, main, web等,是环境变量,可以再webpack中设置:
```js
process.env.BABEL_ENV = 'main'
```
加上配置参数"target",它表示我们需要支持哪些平台+哪些版本。这里声明我们要支持的是node版本为7.x.x。
#### targets: { \[string\]: number },默认{}
需要支持的环境,可选例如:chrome, edge, firefox, safari, ie, ios, node,甚至可以制定版本,如node: 6.5。也使用node: current代表使用当前的版本。
#### browsers: Array\\| string,默认\[\]
浏览器列表,使用的是[browserslist](https://github.com/ai/browserslist),可选例如:last 2 versions, > 5%。
#### loose: boolean,默认false
是否使用宽松模式,如果设置为true,plugins里的插件如果允许,都会采用宽松模式。
#### debug: boolean,默认false
编译是否会去掉console.log。
#### whitelist: Array\\,默认\[\]
设置一直引入的plugins列表。
*****
### plugins
`babel-ployfill`
`transform-runtime`