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

标签 webpack webpack-bundle-analyzer

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

enter image description here

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


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

最佳答案

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

不建议通过破解某些 Webpack 的配置来“强制”使用相同的版本(这是可能的)。 语义版本控制是有意义的,如果 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 解析
// webpack.config.js
module.exports = {
  ...
  modules: [
    path.join(__dirname, '../node_modules')
  ]
  ...
}

关于webpack - 如何强制 WebPack 使用一个版本的模块(而不是 6 个不同的版本?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64579239/

相关文章:

javascript - 在 VueJS 上使用领导线

javascript - Webpack 可以从 SCSS 和 Pug 构建多个 HTML 文件吗?

php - 解析 CSS url 时出现 Webpack 错误

javascript - webpack-bundle-analyzer 显示 webpack -p 不删除开发依赖 react-dom.development.js

webpack - 为什么 Webpack 为每个动态 import() 生成 2 个 block ?

angular - 如何使用 VSCode 调试 Angular?

ruby-on-rails - webpack-bundle-analyzer 不显示报告

reactjs - next.js 包分析器不会创建页面来查看包

使用 --stats-json 构建 Angular 6 不生成 stats.json 文件