Preset 顺序是从后往前运行。
babel有多种预设,最常见的预设是@babel/preset-env
@babel/preset-env
可以让你使用最新的JS语法,而无需针对每种语法转换设置具体的插件
配置
{
"presets": [
"@babel/preset-env"
],
"plugins": []
}
兼容的浏览器
@babel/preset-env
需要根据兼容的浏览器范围来确定如何编译,和postcss一样,可以使用文件.browserslistrc
来描述浏览器的兼容范围
last 3 version
> 1%
not ie <= 8
自身的配置
和postcss-preset-env
一样,@babel/preset-env
自身也有一些配置
配置方式是:
{
"presets": [
["@babel/preset-env", {
"配置项1": "配置值",
"配置项2": "配置值",
"配置项3": "配置值"
}]
]
}
其中一个比较常见的配置项是usebuiltins
,该配置的默认值是false
它有什么用呢?由于该预设仅转换新的语法,并不对新的API进行任何处理
新的api例如promise,当为默认值时是不会处理新的API,需要改为usage,但是还是起不来
这是因为corejs 官方的解释为corejs的默认值为是2,这是使用的第二代的核心
需要使用第三代的核心才能使用
示例:
{
"presets": [
["@babel/preset-env", {
"useBuiltIns": "usage",
"corejs": 3
}]
]
}
当其编译后你会发现编译后的文件里会引入其他包
如图中的两个包(core-js 和 regenerator-runtime) 是没有安装的 需要安装后才能运行,不然代码会报错
补充:@babel/polyfill 已过时,目前被
core-js
和generator-runtime
所取代