Composer 依赖的依赖版本冲突了,如何解决
现在有一个项目是基于 Laravel 8.31.0
的,由于项目需要使用又拍云,现在准备引用又拍云 SDK
Laravel 8
依赖于guzzle 7
upyun/sdk
依赖于guzzle 6
由此,composer require upyun/sdk
时出现了冲突
现在问题是,这个项目已经写了一段时间了,所以降级 Laravel 不太可能;又拍云官方不管事,去年 9 月已经有人提了 issue 到现在都没动静;我也不想 fork 一份去维护或者自己实现一个 SDK
如果 upyun/sdk
也兼容 guzzle 7
,有没有办法解决这个冲突呢
可以试试用 replace 属性,写一个三方包同时代替 packageC:1.x 与 packageC:2.x
@zhouyg 谢谢,看了文档也没搞懂 replace 怎么用的
是否可以在同一个扩展包里同时 require guzzle 7 并 replace guzzle 6,以此来实现代替用途
@zylntxx 翻译:如何使用 Composer 中的 replace 属性?
@Summer :joy:收到,事实上我尝试创建了一个包
cornjosh/guzzle-replace
,其中composer.josn
是这样的按照 如何使用 Composer 中的 replace 属性? 中的描述,我的包应该可以代替
guzzle:^6.0.0
但是尝试安装的时候还是报错了,composer 尝试移除 guzzle 7 并发生了冲突
1-克隆三方依赖(又拍云)到本地, 2-删除(又拍云)composer.json中的冲突包(guzzle 6), 3-将三方包移到私有仓库, 4-root composer.json中新增私有仓库。
如果又拍云开源的话可以将第三部替换成-上传到码云或者github进行私有化。
刚刚解决完这个问题...三方不是又拍云但比较吻合。
blog.csdn.net/weixin_39452069/arti...