多版本npm包共存问题

博客讨论了在项目中遇到的多个axios版本冲突问题,提出了两种解决方案。方案一是统一所有组件库的axios版本并将其放入peerDependencies,但由于成本高和版本更新风险,此方案不可行。方案二是通过package.json的resolutions属性来统一axios版本,但需要测试兼容性。总结中提到,项目中组件较少的情况下,使用resolutions可能是相对可行的临时解决方案。
摘要由CSDN通过智能技术生成

一、问题

举例:项目中使用了公司内部的@xq/a、@xq/b等这些组件,这些组件中都安装了不同版本的axios库,因此,node_modules中就安装了多个版本的axios库。下面是找到的解决方案。
*可以使用npm list xxx查看项目中xxx包的安装树

二、方案

方案一:
从根部解决问题,统一我们所使用的公司所有组件库中使用的axios版本,然后把axios库配置到peerDependencies中,这样的话就会使用我们项目里安装的axios包

存在的问题:
公司很多包都会依赖axios这个包,由于之前没有统一,现在要单独去做这个事情,成本太高。还有axios这个库也是一直在更新的,它一更新,组件库开发那边也需要对这些组件做一遍升级,成本高,缺人力。

暂不考虑成本高的问题,还存在的问题:我们组件里可以把axios配置到peerDependencies中,这样我们在安装公司的组件(例如a组件)时,都会使用我们项目里安装的axios包,但是这也有个问题,就是我们项目里升级了axios组件版本,而公司的npm组件(例如a组件)没有在该版本下测试过的话,也有可能出现组件异常的问题,所以会存在风险的。

所以,该方案不可行。

方案二:
临时方案:package.json配置resolutions统一版本,resolutions允许你复写一个在项目node_modules中被嵌套引用的包的版本。但这样做的前提是版本统一后,不会有兼容问题
“resolutions”: {
“@xq/axios”: “x.x.x”
}
// 这样,项目中用到的axios都会使用resolutions中指定的版本。
存在的问题:
需要测试统一版本后,各组件有没有问题

统一公司所有包的axios版本不可行,但项目中使用的包相对较少,可以考虑这样在项目中进行统一版本,相对可行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值