在作曲家设置中,我需要vendor/package-A
和vendor/package-B
。
包B构建在包A上,并在其composer.json中定义为一个要求。
直接安装基础包A工作正常。其他要求已从Packagist解决,并且包本身已从私有存储库中正确提取。
但是,当只安装软件包B时(由于要求,它也应该拉入软件包A),我收到以下错误:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for vendor/package-B dev-master@dev -> satisfiable by vendor/package-B[dev-master].
- vendor/package-B dev-master requires vendor/package-A dev-master@dev -> no matching package found.
这两个软件包都没有任何标记版本,并且以dev-master版本运行。
有什么我可以忽略的吗?
修改
对于那些对此解决方案感兴趣的人,这是我从下面所选答案中学到的内容摘要。
基本上,存在三种方法来安装深度dev-master依赖项。按照大多数推荐的顺序:
标记所有版本并使用标记版本约束而不是dev-master。 (我实际上最终这样做了!)
在您的应用程序的composer.json
中,使用@dev
标记添加一个额外的require键,以获取您在开发中所需的相应子顺位:
{
"require": {
"vendor/package-B": "dev-master",
"vendor/package-A": "@dev"
}
}
这样,您基本上将特定的子依赖项列入白名单,以用作开发人员。
在您的应用composer.json
中,按以下方式添加minimum-stability
和prefer-stable
键。
{
"minimum-stability": "dev",
"prefer-stable" : true
}
在最后一种方法中,您将稳定性约束降低为dev,但是您还设置了如果可用的稳定版本,您将更喜欢那个。大多数情况下,这会产生想要的行为,但有时它可能是古怪的。
答案 0 :(得分:2)
这是一个稳定性解决问题。
针对这种情况的最佳解决方案是开始标记您的版本。
您可以定义"minmum-stability":"dev"
。
它将设置下限并允许所有包的“dev”包。
您已明确定义dev-master@dev
。
我不确定这是否真的需要。
这可以解释您的情况:https://igor.io/2013/02/07/composer-stability-flags.html