@babel/preset-env
,因为它似乎是推荐的方式(尤其适合初学者)。同时,通过我的.browserslistrc
文件,也使用了Browserslist集成。Webpack编译良好(
babel-loader
版本为8.0.2
),没有错误,但我对这里提到的useBuiltIns: "entry"
选项以及Babel中的polyfill
系统感到困惑。
.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
包并以require("@babel/polyfill");
开头启动我的vendors.js
吗?
3)如果我都省略了呢?
如果我做了1和2,我的vendors.js
将增长到411 KB
如果我都省略了,它只有341 KB
在生产构建之后。
我认为@babel/preset-env
默认情况下处理所有重写和polyfills,不需要我额外的import/require
...
谢谢!
-- 编辑 --
Babel团队刚刚更新了@babel/polyfill
文档,基于一些GitHub问题(包括我的)抱怨文档不清晰/误导。现在如何使用它已经很明显了。(...然后我的原始问题似乎很愚蠢 :))
import "core-js/stable"; import "regenerator-runtime/runtime";
吗? - Maxcore-js
添加到依赖项中即可。 - Egor Litvinchuk