Babel
- @babel/preset-env:支持所有 es 标准的特性
- target
- @babel/compat-table:babel 会使用 brwoserslist 来把它们转成目标环境具体版本的数据
"presets": [["@babel/preset-env", { "targets": "defaults" }]]
- corejs:polyfill
- polyfill 默认是全局引入的
- useBuiltIns:使用 polyfill(corejs)的方式
- entry:入口处全部引入
- usage:还是每个文件引入用到的(usage)
- false
- target
- @babel/plugin-transform-runtime
- 减少重复 helpers 代码
- 防止 polyfill 污染全局
- @babel/plugin-transform-runtime 优先级比 @babel/preset-env 高,意味着同时使用 corejs 会冲突,无法根据 target 动态引入 polyfill
项目配置
{
"presets": [
[
"@babel/preset-env",
{
"targets":
{
"chrome": "58"
// 按自己需要填写
},
"useBuiltIns": "entry",
"corejs":
{
"version": 3,
"proposals": true // @babel/preset-env 不会包含低于 Stage 3 的 JavaScript 语法建议
}
}
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": false // 防止与 @babel/preset-env 冲突
}
]
]
}
import 'core-js/stable';
import 'regenerator-runtime/runtime';
// 入口文件代码
库配置
{
"presets": [
[
"@babel/preset-env",
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"version": 3,
"proposals": true
}
]
]
}
其他文章
交流区
加载中...