【发布时间】:2018-10-03 11:23:28
【问题描述】:
我正在开发一个使用 Babel 7 和 Webpack 4 的 Web 项目。我以前从未使用过 Babel,并且无法真正理解其中的某些部分。基于documentation,我使用@babel/preset-env,因为这似乎是推荐的方式(尤其是对于初学者)。还通过我的 .browserslistrc 文件使用 Browserslist 集成。
Webpack 编译得很好(babel-loader 版本 8.0.2),我没有错误,但我对这个 useBuiltIns: "entry" option mentioned here 以及 polyfill 系统如何在 Babel 中工作感到困惑。
.babelrc.js
module.exports = {
presets: [
['@babel/preset-env', {
"useBuiltIns": "entry" // do I need this?
}]
],
plugins: [
'@babel/plugin-syntax-dynamic-import'
]
};
.browserslistrc
复制自here(认为合理,因为我的项目使用的是 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 软件包并使用 require("@babel/polyfill"); 启动我的 vendors.js 吗?
3) 如果我都省略了怎么办?
如果我执行 1 和 2,我的 vendors.js 会增长到 411 KB
如果我都省略了,那就是341 KB
在生产构建之后。
我认为@babel/preset-env 默认情况下会处理所有重写和填充,而我这边不需要任何额外的import/require...
谢谢!
-- 编辑--
Babel 的团队刚刚 updated 和 docs of @babel/polyfill 基于一些 GitHub 问题(包括我的)抱怨不明确/误导性的文档。现在很明显如何使用它。 (...在那之后我原来的问题似乎很愚蠢:)
【问题讨论】:
标签: javascript webpack babeljs babel-preset-env