如何强制WebPack使用一个版本的模块(而不是6个不同的版本?)

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

如何强制WebPack使用一个版本的模块(而不是6个不同的版本?)

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


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

lgh19751228 回答:如何强制WebPack使用一个版本的模块(而不是6个不同的版本?)

发生这种情况的原因可能是您的应用(或它的依赖项)需要同一个lib的不同版本。

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

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

您可以运行yarn why lib-namenpm ls lib-name,这将为您打印消耗lib的依赖项列表以及哪个版本,这将帮助您升级依赖项以对齐版本。

如果您仍然想强制使用,可以检查以下解决方案https://github.com/webpack/webpack/issues/6505

  1. 使用yarn resolutions仅安装一个版本。
  2. 使用webpack别名,将lib-name别名为特定路径(每个不同的版本都安装在使用者node_modules文件夹中)
  3. 强制Webpack仅通过node_modules应用通过
  4. 进行解析
// webpack.config.js
module.exports = {
  ...
  modules: [
    path.join(__dirname,'../node_modules')
  ]
  ...
}
本文链接:https://www.f2er.com/1316163.html

大家都在问