svu高级用法:如何自定义版本前缀、标签模式和预发布版本
【免费下载链接】svusemantic version utility项目地址: https://gitcode.com/gh_mirrors/sv/svu
SVU(语义版本工具)是一个强大的Git版本管理助手,能够自动化处理语义版本号。如果你已经掌握了svu的基础用法,那么现在让我们一起探索它的高级功能,学习如何自定义版本前缀、灵活配置标签模式以及管理预发布版本。这些高级技巧将帮助你更好地适应不同的项目需求和工作流程。😊
为什么需要高级配置?
在真实的开发场景中,每个项目都有其独特的版本管理需求。有些项目可能使用不同的标签前缀,有些需要在特定分支上管理版本,还有些需要处理预发布版本。SVU提供了丰富的配置选项来满足这些需求。
自定义版本前缀配置
基础前缀设置
默认情况下,svu使用"v"作为版本前缀(如v1.2.3)。但你可以轻松地自定义这个前缀:
命令行方式:
svu next --tag.prefix="release-" # 输出:release-1.2.3配置文件方式:在项目根目录创建.svu.yml文件:
tag: prefix: "release-" output: "release-"前缀输出分离
有时候你可能希望标签使用一个前缀,但输出时使用另一个前缀。svu支持这种分离配置:
tag: prefix: "v" # 标签实际使用的前缀 output: "" # 输出时不带前缀这样配置后,标签会是v1.2.3,但svu输出的是1.2.3,非常灵活!
高级标签模式配置
标签模式选择
svu支持两种标签查找模式:
- 当前分支模式(默认):只在当前分支查找标签
- 所有分支模式:在所有分支中查找标签
配置示例:
tag: mode: "current" # 或 "all"标签模式匹配
你可以使用通配符来匹配特定的标签模式:
svu next --tag.pattern="project-name/v*"这对于多模块项目特别有用,比如在monorepo中管理不同子项目的版本。
多模块项目配置示例:查看mono-repo-example.svu.yml文件,可以看到一个完整的monorepo配置示例。
预发布版本管理
创建预发布版本
预发布版本对于测试和预览版发布非常重要:
# 创建alpha预发布版本 svu next --prerelease="alpha" # 创建带构建号的预发布版本 svu next --prerelease="beta.1"预发布版本递增
svu提供了专门的prerelease命令来递增预发布版本:
# 如果当前版本是1.2.3-alpha.1 svu prerelease # 输出:1.2.3-alpha.2元数据支持
除了预发布版本,你还可以添加构建元数据:
svu next --metadata="build.20240101" # 输出:1.2.3+build.20240101目录过滤功能
在大型项目中,你可能只想基于特定目录的更改来确定版本号:
svu next --log.directory="src/" --log.directory="lib/"或者在配置文件中:
log: directory: - "src/" - "lib/"高级配置技巧
完整配置示例
创建一个完整的.svu.yml配置文件:
verbose: false tag: pattern: "" # 标签匹配模式 prefix: "v" # 标签前缀 output: "^tag.prefix^" # 输出前缀(默认与tag.prefix相同) mode: "all" # 标签查找模式 log: directory: - "." # 监控的目录 metadata: "" # 元数据 always: false # 是否总是递增版本 v0: false # 是否保持v0版本环境变量支持
svu也支持通过环境变量配置:
export SVU_TAG_PREFIX="release-" export SVU_TAG_MODE="current" export SVU_PRERELEASE="beta" svu next实战应用场景
场景1:多环境发布
# 开发环境配置 tag: prefix: "dev-" output: "dev-" prerelease: "dev" # 生产环境配置 tag: prefix: "v" output: "v"场景2:CI/CD集成
在GitHub Actions中集成svu:
- name: 计算下一个版本 run: | NEXT_VERSION=$(svu next --tag.prefix="v") echo "VERSION=$NEXT_VERSION" >> $GITHUB_ENV场景3:多项目版本管理
对于包含多个子项目的仓库,可以为每个项目创建单独的配置文件:
project-a/.svu.yml project-b/.svu.yml常见问题解决
问题1:标签找不到
如果svu找不到标签,检查:
- 标签模式是否正确(current vs all)
- 标签前缀是否匹配
- 是否在正确的git目录中
问题2:版本不递增
使用--always标志强制递增:
svu next --always或者在配置中设置:
always: true问题3:v0版本处理
对于仍在v0阶段的项目,可以防止主版本号递增:
svu next --v0最佳实践建议
- 统一配置:将常用配置放在
.svu.yml中,避免重复输入命令行参数 - 版本策略:根据项目阶段选择合适的版本前缀和模式
- 测试配置:在非生产分支上测试配置更改
- 文档化:在项目文档中记录版本管理策略
总结
通过掌握svu的高级用法,你可以:
- 🔧 自定义版本前缀以适应不同的发布流程
- 🏷️ 灵活配置标签模式来匹配项目结构
- 🚀 管理预发布版本和构建元数据
- 📁 使用目录过滤功能精准控制版本递增
- ⚙️ 通过配置文件统一管理所有设置
这些高级功能让svu不仅仅是一个简单的版本工具,而是一个完整的语义版本管理解决方案。无论你是管理单个项目还是复杂的monorepo,svu都能提供强大的支持。
记住,好的版本管理是项目成功的关键!✨
【免费下载链接】svusemantic version utility项目地址: https://gitcode.com/gh_mirrors/sv/svu
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考