Composer项目中应通过解析composer.json获取版本号而非硬编码,使用PHP命令校验语义化格式后打v前缀Git标签,并确保工作区干净、标签未重复,最后手动确认推送。

在 Composer 项目中,可以通过定义 scripts 来自动化版本发布前的 Git 标签操作。核心思路是:用 Composer 脚本调用 Shell 命令(如 git tag),并配合变量(如 $VERSION)或动态读取版本号,确保标签与 composer.json 中的 version 字段一致。
确认版本号来源:优先读取 composer.json
不要硬编码版本号。Composer 提供了内置变量 {$version},但它只在包被安装时可用,**不适合在本地发布脚本中直接使用**。更可靠的方式是用命令行工具解析 composer.json:
- Linux/macOS:用
jq工具提取version字段,例如:jq -r '.version' composer.json - Windows(无 jq):可改用 PHP 一行命令:
php -r "echo json_decode(file_get_contents('composer.json'))->version;" - 注意:确保
composer.json中的version字段已手动更新为待发布的版本(如"1.2.0"),这是语义化发布的前提
编写安全的打标签脚本(含校验)
避免重复打标签或误操作。推荐在 composer.json 的 scripts 中定义一个带检查的脚本:
"scripts": {
"release:tag": [
"@release:check-version",
"git tag -a "v{$VERSION}" -m "Release v{$VERSION}"",
"git push origin "v{$VERSION}""
],
"release:check-version": "php -r "$v = json_decode(file_get_contents('composer.json'))->version; if (!$v || !preg_match('/^\\d+\\.\\d+\\.\\d+(-[a-z0-9]+)?$/', $v)) { die('Invalid version format in composer.json\n'); } echo "Using version: $v\n';""
}登录后复制
说明:
标签: php linux js git json composer windows github 编码 工具 mac ai m
还木有评论哦,快来抢沙发吧~