branch-alias 是为 dev- 开头的开发分支(如 dev-main)提供稳定版本号映射(如 "1.0.x-dev"),使其他项目能用语义化版本约束(如 "^1.0")安全依赖;它必须定义在被依赖库的 composer.json 的 extra.branch-alias 中,且仅对 VCS 包生效。
Composer 的branch-aliasdev-maindev-develop^2.0composer.json"alias": "2.0.x-dev"repositoriescomposer.jsondev-mainrequire"myvendor/mylib": "dev-main"dev-main^1.0dev-main1.0.x-dev"myvendor/mylib": "^1.0"dev-dev-maindev-nextcomposer.jsonX.Y.z-dev1.0.0stablegit checkoutcomposer.json
{
"name": "myvendor/mylib",
"version": "1.0.0",
"autoload": { "psr-4": { "MyVendor\MyLib\": "src/" } },
"extra": {
"branch-alias": {
"dev-main": "1.0.x-dev"
}
}
}
extra.branch-aliasextrarequireconfigdev-main"dev-main"x-dev1.0.x-dev1.0-dev1.x-devdev-next^1.0dev-maincomposer.jsonpathpathbranch-aliascomposer show myvendor/mylibdev-main 1.0.x-devdev-mainrepositories
{
"repositories": [
{
"type": "path",
"url": "../mylib"
}
],
"require": {
"myvendor/mylib": "dev-main as 1.0.x-dev"
}
}
asextra.branch-aliasdev-develop"2.0.x-dev"dev-main"1.0.x-dev"composer require myvendor/mylib:^2.0dev-developcomposer update"myvendor/mylib": "^1.0"dev-main1.0.x-devdev-mainextra.branch-alias