【问题标题】:Composer doesn't find local vcs dependencyComposer 找不到本地 vcs 依赖项
【发布时间】:2015-05-29 23:35:25
【问题描述】:

我有一个项目依赖于一个本地包,它本身依赖于另一个本地包。

项目

{ ... “存储库”:[ { “包装师”:假 }, { “类型”:“vcs”, "url": "/path/to/local/package1" }, ], “要求”: { “本地/package1”:“开发主机” } ... }

套餐一

{ ... “存储库”:[ { “包装师”:假 }, { “类型”:“vcs”, "url": "/path/to/local/package2" }, ], “要求”: { “本地/package2”:“开发大师” } ... }

当我在package1 上执行composer install 时,一切正常,packages2 被找到并安装。但是当我在 project 上执行此操作时,它找不到 package2 并出现此错误:

问题 1 - local/package1 dev-master 的安装请求 -> local/package1[dev-master] 可满足。 - local/package1 dev-master 需要 local/package2 dev-master -> 找不到匹配的包。

【问题讨论】:

  • 问题不在于下面的答案中提到的递归存储库定义是不允许的,而是即使您将存储库定义从“子”复制到“父”,它也不会接受它,仍然找不到它。现在我很好奇他们将如何解释这一点,这不是一个错误,而是一个功能,至少它还没有完成功能然后 imo。

标签: php composer-php


【解决方案1】:

来自作曲家manual

存储库仅适用于根包和 您的依赖项中定义的存储库将不会被加载。如果您想了解原因,请阅读 the FAQ entry

【讨论】:

  • 谢谢,我必须将所有内容添加到项目的 json 中。如果作曲家为这种情况添加了--recursive-repositories 选项,那就太好了。解决了。​​
  • 是的,composer 在处理递归时不是那么灵活,还有一些其他的陷阱,例如没有嵌套的require-dev。
  • 递归本地 repos 是一个复杂的问题。不值得花时间和麻烦来实现它,因为使用本地存储库是而且应该只是暂时的。解决方案是私下(Satis)或公开(Packgist 或克隆)“发布”。 @estus 你能提供一个“嵌套需求开发”功能的用例吗?
  • 我不久前处理过依赖重的包,一些require-dev项目实际上是正常工作所需要的,我最终浏览了suggest条目,我相信这是Laravel的东西-相关。
  • 感谢您的解释。这听起来更像是“包定义出现在错误的 require 部分问题中”,而不是真正的 Composer “陷阱,例如没有嵌套的 require-dev”。我之所以这样问是因为,为了改进 Composer,确定确切的用例非常重要,甚至更好的是让 composer.json 重现问题。
猜你喜欢
  • 2019-04-27
  • 2021-10-10
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
相关资源
最近更新 更多