我遇到了一个我无法解决的问题。
以下是我的例子:
“A”需要:
{
"require": {
"symfony/form": "2.*",
"massivescale/celery-php": "dev-master@dev"
}
}
(因为celery-php没有任何标签)
“B”需要“A”。
{
"requires": {
"A": "@stable"
}
}
如果我不在“B”中添加“@dev”稳定性需要“A”,我收到错误,因为不会获取celery-php。 我在“B”中添加“@dev”稳定性需要“A @ dev”,“symfony / form”获取“dev”版本。
我找到的唯一解决方案是在“B”中要求“massivescale / celery-php”:“dev-master @ dev”,这很糟糕,因为B不需要知道A需要celery-php。
我没有搜索过的另一个可能的解决方案可能是使用一个令人满意的实例和/或一个私有的分叉来强制版本号,但是对于一个小的需求来说需要很多维护。
以下是Google群组中同一问题的链接:https://groups.google.com/forum/#!topic/composer-users/K6cMktI-fa4
答案 0 :(得分:2)
将此添加到您的根composer.json:
"prefer-stable" : true,
"minimum-stability": "dev"
这将允许您的第二级代表使用开发包。
有关稳定性标志的更多信息:https://igor.io/2013/02/07/composer-stability-flags.html
有关稳定性标志实施的更多细节:https://github.com/composer/composer/issues/908
希望它对你有所帮助。
答案 1 :(得分:0)
如上所述,这里没有真正的解决方案。
找到的唯一解决方案是在主程序包中需要dev依赖项。
真正的解决方案是强制您的组件使用其依赖项的稳定版本。