我目前正在使用 webpack 来捆绑我的项目,我的 main.js 非常大,所以我目前正在寻找一种方法来减少我的 main.js 的大小。 我可以看到我的捆绑包中最大的东西是 core-js 东西。 我使用 core-js 来支持 IE11,主要是为了 promise 和 generator(Saga)
我在 babelrc 上有一些设置。
["@babel/preset-env", {
"useBuiltIns": "usage",
"corejs": 3,
"targets": {
"ie": "11"
}
}]
["@babel/transform-runtime", {
"corejs": 3
}],
index.js
import 'core-js/stable'
import 'regenerator-runtime/runtime'
我想知道它们是应该放在捆绑包中还是应该各有一个。
你的 babel 设置不正确。你不能设置
"@babel/preset-env"
和 "@babel/transform-runtime"
都使用 corejs 3.
core-js作者说的这些
这是 3 种不同的 core-js 用法。你应该只使用其中之一 他们:
- core-js直接导入
- core-js 通过使用插件从 @babel/preset-env
- core-js注入无全局污染 @babel/transform-runtime 插件
我还了解到,这是一个艰难的想法我如何使用 babel 7 polyfill Promise.any()?
这里的关键问题是 core-js 和 core-js-pure 有什么区别?正如作者在 core-js 3 release note,
中所说的那样提取一个没有全局命名空间污染的版本到一个单独的 core-js-pure 包(替换 core-js/库)。
查看
core-js-pure
readme 以获取更多信息(例如“纯版本的 core-js / babel-runtime 旨在用于库的代码......”)。
在你的例子中,因为你同时设置了它们,core-js 和 core-js-pure 都导入到 main.js 中,所以它很大。