如何强制 WebPack 使用一个版本的模块(而不是 6 个不同的版本?)
How to force WebPack to use one version of module (instead of 6 different versions?)
在我们的项目中 Webpack-bundle-analyzer
插件说包使用特定模块(js 文件)6 次。
制作项目的最佳方法是什么,因为它只使用一个(而不是多个)?我知道它们可能来自依赖项的依赖项,但是应该如何解决这样的问题?
我可以手动检查我的应用程序是否存在可能的代码中断,但目标肯定是使用一个 bn.js
。我们的 package.json
不直接将其包含在任何依赖项中。
出现这种情况可能是因为您的应用(或其依赖项)需要同一库的不同版本。
不建议通过破解某些 Webpack 的配置来“强制”使用相同的版本(这是可能的)。
语义版本控制是有意义的,如果 lib 增加了一个主要版本,这意味着它包含 重大更改。
更好的方法是手动调整库(或其使用者)的版本。
你可以 运行 yarn why lib-name
或 npm ls lib-name
将打印出一个正在使用 lib 的依赖项列表以及在哪个版本,这将帮助你升级依赖项为了对齐版本。
如果你还想强制,可以查看这些解决方案https://github.com/webpack/webpack/issues/6505
- 使用
yarn resolutions
只安装一个版本。
- 使用 webpack 别名,将
lib-name
别名到特定路径(每个不同的版本都安装在消费者 node_modules
文件夹中)
- 通过
强制 webpack 仅从应用 node_modules
解析
// webpack.config.js
module.exports = {
...
modules: [
path.join(__dirname, '../node_modules')
]
...
}
在我们的项目中 Webpack-bundle-analyzer
插件说包使用特定模块(js 文件)6 次。
制作项目的最佳方法是什么,因为它只使用一个(而不是多个)?我知道它们可能来自依赖项的依赖项,但是应该如何解决这样的问题?
我可以手动检查我的应用程序是否存在可能的代码中断,但目标肯定是使用一个 bn.js
。我们的 package.json
不直接将其包含在任何依赖项中。
出现这种情况可能是因为您的应用(或其依赖项)需要同一库的不同版本。
不建议通过破解某些 Webpack 的配置来“强制”使用相同的版本(这是可能的)。 语义版本控制是有意义的,如果 lib 增加了一个主要版本,这意味着它包含 重大更改。
更好的方法是手动调整库(或其使用者)的版本。
你可以 运行 yarn why lib-name
或 npm ls lib-name
将打印出一个正在使用 lib 的依赖项列表以及在哪个版本,这将帮助你升级依赖项为了对齐版本。
如果你还想强制,可以查看这些解决方案https://github.com/webpack/webpack/issues/6505
- 使用
yarn resolutions
只安装一个版本。 - 使用 webpack 别名,将
lib-name
别名到特定路径(每个不同的版本都安装在消费者node_modules
文件夹中) - 通过 强制 webpack 仅从应用
node_modules
解析
// webpack.config.js
module.exports = {
...
modules: [
path.join(__dirname, '../node_modules')
]
...
}