跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • composer 依赖冲突怎么解决
未分類
13 7 月 2020

composer 依赖冲突怎么解决

composer 依赖冲突怎么解决

資深大佬 : rikka 79

项目依赖 packageA 和 packageB 两个第三方包,然后这两个包又依赖另外一个包的不同版本
packageA ->packageC:1.x
packageB ->packageC:2.x
结果自然安装冲突失败
大佬有話說 (12)

  • 資深大佬 : vigoss

    fork 一份 A 或者 B,修改依赖。替换成你 fork 的。

  • 資深大佬 : HanSonJ

    其中一个 package 换个可以兼容的版本,可以是 A 升级或 B 降级

  • 主 資深大佬 : rikka

    @vigoss #1 fork 意味着我得自己维护这个包啊

    @HanSonJ #2 没兼容的版本怎么办

  • 資深大佬 : zjsxwc

    和 golang 那样处理

  • 資深大佬 : dobelee

    解决 json 的冲突,保留你想要的版本,干掉文件,重新安装。

  • 資深大佬 : gouki

    js 可以 declare 方法,PHP 不行。所以你的想法在 PHP 中是行不通的。
    上的方法都不错。还有一种就是,可能你引用的类库太老了,居然不更新了,那你最好也别引用了。否则后面的坑可能会更多

  • 資深大佬 : jfcherng

    你不想維護那就給作者發 PR 吧, 作者不理你那就換其他 lib

  • 主 資深大佬 : rikka

    @jfcherng #7 这是无奈之举,根本问题是 composer 居然无法解决这种依赖问题,有点惊讶

  • 資深大佬 : zjsxwc

    symfony 的做法是在高版本里增加 polyfill 兼容代码,比如你创建个 packageC-polyfill 三方项目,
    这个三方项目的作用就是让你的 packageC:2.x 兼容 packageC:1.x,
    然后让 packageA 依赖下 packageC:2.x,
    以及让 packageC:2.x 依赖你的 packageC-polyfill

  • 主 資深大佬 : rikka

    @zjsxwc #9 你忘了一点,我项目依赖 A,B 这两个第三方包,然后 A,B 又依赖了 C,这个 C 显然也是第三方的,这 3 个包我根本无法修改他们的依赖关系
    除非像 1L 说的 fork 一份出来修改

  • 資深大佬 : zjsxwc

    @rikka
    可以试试用 replace 属性,写一个三方包同时代替 packageC:1.x 与 packageC:2.x

    http://blog.ifeeline.com/2695.html

    “`
    “replace”: {
    “packageC”: “1.x|2.x”
    }
    “`

  • 主 資深大佬 : rikka

    @zjsxwc #11 看了这个 replace 属性,可以在 AB 不知觉的情况下替换掉 C,替换为我自己实现的 packageC-polyfill,最终就是为了解决冲突,我自己得去维护这个 C,还是不太满意
    不过在某些情况这个 replace 属性是有点用处,学习了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具