我想实现以下设置(为了清楚起见,我省略了其他依赖项和内容):
Project' composer.json
{
"require": {
"vendor/masterpackage": "*"
}
}
主程序包' composer.json
{
"require": {
"vendor/package-1": "dev-master",
"vendor/package-2": "dev-master"
}
}
主程序包的版本是版本,子程序包不是,因此是dev-master要求。
由于minimum-stability
只能在根composer.json中设置并且应用于所有依赖项(在我的情况下是不需要的),是否可以为<设置dev
- 稳定性标志strong>仅主程序包及其自己的依赖项,以便正确安装其子程序包?我已经尝试"vendor/masterpackage": "*@dev"
,但无济于事......
答案 0 :(得分:0)
你试验它的方式,它将无法正常工作。
依赖包的依赖关系不能直接影响。因此,如果您的项目禁止开发包,那么您就不走运了。
您可以将这些间接套餐添加到项目composer.json
中,并在必要的@dev
或dev-X
环境中添加这些套餐。这样就可以直接使用,从而实现开发稳定性,并且还可以满足主包装要求。
但是,请注意,依赖于分支是一种非常非常糟糕的习惯,并使您的依赖性变得非常脆弱。记录了已使用的提交ID,但是一旦更新并且出错,您将很难处理所有移动部件,即所有仅提供分支的存储库。
答案 1 :(得分:0)
我找到了一种方法来实现这项工作,并认为发布它作为未来参考的答案是有益的。
Project&#39; composer.json
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master",
"vendorname/masterpackage": "*"
},
"merge-plugin": {
"require": [
"vendor/vendorname/masterpackage/dev-composer.json"
]
}
}
Master package&#39> dev-composer.json
{
"require": {
"vendorname/package-1": "dev-master@dev",
"vendorname/package-2": "dev-master@dev"
}
}
合并插件使其工作,因为它将指定的JSON文件的依赖关系视为它们在根composer.json中