branch-alias用于将开发分支映射为预发布版本号,例如将dev-main设为2.0.x-dev,使其他项目可通过^2.0@dev引用该分支,便于依赖管理并保持语义清晰。

在使用 Composer 管理 PHP 项目依赖时,branch-alias 是一个非常有用的配置项,它允许你为开发分支(通常是 dev-main 或 dev-develop)设置一个版本别名,以便其他包可以按稳定版本的格式来引用它。
什么是 branch-alias?
当你正在开发一个库,并希望其他项目可以通过类似 ^2.0@dev 的方式引用你的 main 分支时,Composer 需要知道这个开发分支“相当于”哪一个未来的版本。这就是 branch-alias 的作用:它将某个分支映射为一个预发布的版本号。
例如,如果你正在开发 2.0 版本,但尚未打 tag,你可以将 main 分支 alias 成 2.0.x-dev,这样其他项目就可以安全地依赖它,就像依赖一个即将发布的版本一样。
如何配置 branch-alias
在项目的 composer.json 文件中,通过 extra 字段下的 branch-alias 来定义:
{
"name": "your-vendor/your-package",
"version": "2.0.x-dev",
"require": {
"php": "^8.0"
},
"extra": {
"branch-alias": {
"dev-main": "2.0.x-dev"
}
}
}
上面的配置表示:
- 当前分支是
dev-main - 它被当作
2.0.x-dev版本来处理 - 其他项目可以使用
"your-vendor/your-package": "^2.0@dev"来依赖它
常见使用场景
假设你维护一个开源库,主分支正在开发下一个大版本:
- 你刚从 1.x 升级到 2.x,还没有发布正式版
- 你想让测试用户能通过
composer require your-vendor/your-package:^2.0@dev安装最新开发版 - 你不想频繁打
2.0.0-alpha这类 tag,而是直接用开发分支提供支持
此时设置 branch-alias 就非常合适。
注意事项
- branch-alias 只对开发版本有效,如
dev-main、dev-develop - 别名格式应以
x.x.x-dev结尾,例如:3.1.x-dev、4.0.0-dev - 必须显式指定分支名称(如
dev-main),不能用于任意分支 - 如果未设置 branch-alias,则 dev 分支只能通过完整分支名引用(如
dev-main#commit-hash)
基本上就这些。合理使用 branch-alias 能让你的开发版本更易于被他人依赖,同时保持版本语义清晰。










