Composer通过Git分支和标签识别依赖版本,分支被映射为dev-前缀的开发版本(如dev-main),标签则按语义化版本解析为稳定或预发布版本,需注意命名规范与稳定性设置。
Composer 使用版本控制系统(如 Git)中的分支和标签来确定项目依赖的可用版本。它通过分析 VCS 仓库的结构,自动识别分支和标签,并将其映射为可安装的包版本。
分支如何被处理
Composer 将每个分支转换为一个潜在的开发版本。默认情况下,它会将分支名称转换为对应的 dev- 前缀版本。
例如:
- 分支 main 或 master 会被映射为 dev-main 或 dev-master
- 分支 feature/user-auth 会被映射为 dev-feature/user-auth
这些 dev 版本可以像普通版本一样在 composer.json 中引用,但通常用于开发阶段。使用时 Composer 会拉取该分支的最新提交。
标签如何被处理
Git 标签(tag)通常代表正式发布版本。Composer 将符合语义化版本规范的标签(如 v1.0.0、1.2.3)直接识别为稳定版本。
例如:
- 标签 v1.5.0 会被识别为版本 1.5.0
- 标签 2.1.3-beta 会被识别为带稳定性后缀的版本
如果标签名不符合标准版本格式,Composer 可能无法正确解析,导致该标签不可用。
版本优先级与稳定性
Composer 在选择版本时,会根据版本号和稳定性规则进行排序。默认不会安装不稳定版本(如 dev、alpha、beta),除非明确指定。
可以通过以下方式控制:
- 在 require 中使用 dev-branchname 安装特定分支的最新代码
- 使用 @dev 修饰符允许安装开发版本
- 配置 minimum-stability 和 prefer-stable 来调整整体策略
缓存与更新机制
Composer 会缓存 VCS 仓库的元信息(如分支和标签列表),避免每次都拉取远程数据。当需要获取最新分支或标签时,运行 composer update 或 composer clear-cache 可强制刷新。
也可以使用 composer show vendor/package –all 查看某个包所有可用的分支和标签版本。
基本上就这些。Composer 对 VCS 的支持很成熟,只要遵循标准命名,分支和标签都能被自动识别和使用。关键是理解 dev- 前缀机制和版本稳定性规则。