关于npm 多版本共存问题
2021-09-06 本文已影响0人
Asuler
组件库A 依赖了 rc-trigger v4
组件库B 依赖了 rc-trigger v3
按照npm 的安装规则,如果package.json是组件A在前面,那么rc-trigger v4会安装到组件库A同级目录下,后面安装到组件库B的时候,已经检测到有v4版本的了,会冲突,所以会在组件库B的目录下再创建一个 node_modules 用于放置 rc-trigger v3
在编译的时候会自动从自己的目录下去找对应的rc-trigger,没有的话会往外找,这逻辑使得多版本的npm包能并存
如果webpack 配置不当,会导致找npm包的顺序错误,比如只找最外层
https://webpack.docschina.org/configuration/resolve/#resolvemodules
在这里可以配置默认找包的顺序
![](https://img.haomeiwen.com/i7852092/7d082c26476aeacc.png)
如果给modules 配置了绝对路径到node_modules(path.join, __dirname 等等),那么它将会只找最外层,
所以应该不配置modules,让他按照默认的顺序即可