2

在我们的项目Webpack-bundle-analyzer插件中说捆绑使用特定模块(js文件)6次。

在此处输入图像描述

制作项目的最佳方法是什么,因为它只使用一个(而不是多个)?我知道它们可能来自依赖项的依赖,但是应该如何解决这样的问题呢?


我可以手动检查我的 APP 是否存在可能的代码中断,但目标肯定是使用一个bn.js. 我们package.json不直接将它包含在任何依赖项中。

4

1 回答 1

2

发生这种情况可能是因为您的应用程序(或其依赖项)需要同一库的不同版本。

不建议通过破解一些 Webpack 的配置来“强制”相同的版本(这是可能的)。语义版本控制是有含义的,如果库碰到了主要版本,这意味着它包含重大更改

更好的方法是手动对齐 lib(或其使用者)的版本。

您可以运行yarn why lib-name,或者npm ls lib-namewhich 将打印一个正在使用 lib 的依赖项列表以及哪个版本,这将帮助您升级依赖项以对齐版本。

如果还想强制,可以查看这些解决方案https://github.com/webpack/webpack/issues/6505

  1. 用于仅yarn resolutions安装一个版本。
  2. 使用 webpack 别名,将别名设置lib-name为特定路径(每个不同的版本都安装在消费者node_modules文件夹中)
  3. 强制 webpack 仅从应用程序node_modules解析
// webpack.config.js
module.exports = {
  ...
  modules: [
    path.join(__dirname, '../node_modules')
  ]
  ...
}
于 2020-10-29T08:43:36.830 回答