我正在开发一个使用 Babel 7 和 Webpack 4 的 Web 项目。我以前从未使用过 Babel,也无法真正理解其中的某些部分。基于我正在使用的文档@babel/preset-env
,因为它似乎是推荐的方式(尤其是对于初学者)。还通过我的.browserslistrc
文件使用 Browserslist 集成。
Webpack 编译得很好(babel-loader
版本8.0.2
),我没有错误,但我对useBuiltIns: "entry"
这里提到的这个选项以及polyfill
系统在 Babel 中的工作方式感到困惑。
.babelrc.js
module.exports = {
presets: [
['@babel/preset-env', {
"useBuiltIns": "entry" // do I need this?
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import'
]
};
.browserslistrc
从这里复制(认为合理,因为我的项目使用的是 Bootstrap)。
>= 1%
last 1 major version
not dead
Chrome >= 45
Firefox >= 38
Edge >= 12
Explorer >= 10
iOS >= 9
Safari >= 9
Android >= 4.4
Opera >= 30
所以我的问题是:
1)我需要使用该useBuiltIns: "entry"
选项吗?
2)我需要安装@babel/polyfill
包并开始我vendors.js
的require("@babel/polyfill");
吗?
3)如果我省略两者怎么办?
如果我做 1 和 2,我vendors.js
会长大到411 KB
如果我忽略这两个,那只是341 KB
在生产构建之后。
我认为@babel/preset-env
默认情况下会处理所有的重写和填充,而import/require
我不需要任何额外的东西......
谢谢!
- 编辑 -
Babel 的团队刚刚更新了基于一些 GitHub 问题(包括我的问题)的文档,@babel/polyfill
这些问题抱怨文档不清晰/具有误导性。现在很明显如何使用它。(......在那之后我原来的问题似乎很愚蠢:)