我的包里有 core js 和 core js pure。这样对吗?

问题描述 投票:0回答:1

我目前正在使用 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'

我想知道它们是应该放在捆绑包中还是应该各有一个。

javascript reactjs webpack bundle
1个回答
0
投票

你的 babel 设置不正确。你不能设置

"@babel/preset-env"
"@babel/transform-runtime"
都使用 corejs 3.

core-js作者说的这些

这是 3 种不同的 core-js 用法。你应该只使用其中之一 他们:

  1. core-js直接导入
  2. core-js 通过使用插件从 @babel/preset-env
  3. 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 中,所以它很大。

© www.soinside.com 2019 - 2024. All rights reserved.