DEV Community

Leo
Leo

Posted on • Edited on

使用 release-it 自动化版本发布

release-it 是一个强大的版本发布工具,可以自动化处理版本号更新、变更日志生成和 Git 标签创建。

快速开始

1. 安装依赖

npm install release-it @release-it/conventional-changelog -D 
Enter fullscreen mode Exit fullscreen mode

2. 配置 package.json

{ "scripts": { "release": "release-it" }, "release-it": { "git": { "commitMessage": "chore(release): v${version}", "tagName": "v${version}" }, "plugins": { "@release-it/conventional-changelog": { "preset": "angular", "infile": "CHANGELOG.md" } } } } 
Enter fullscreen mode Exit fullscreen mode

Git 提交规范

使用 Angular 提交信息规范:

<type>(<scope>): <subject> 
Enter fullscreen mode Exit fullscreen mode

常用类型

  • feat: 新功能
  • fix: Bug 修复
  • docs: 文档变更
  • style: 代码格式
  • refactor: 代码重构
  • test: 测试
  • chore: 构建工具

示例

git commit -m "feat(auth): add user login" git commit -m "fix(api): resolve parsing issue" git commit -m "docs: update README" 
Enter fullscreen mode Exit fullscreen mode

使用方法

日常提交

git add . git commit -m "feat(components): add button component" git push 
Enter fullscreen mode Exit fullscreen mode

发布版本

npm run release 
Enter fullscreen mode Exit fullscreen mode

release-it 会自动:

  1. 分析提交历史,确定版本类型
  2. 更新 package.json 中的版本号
  3. 生成/更新 CHANGELOG.md
  4. 创建发布提交和标签
  5. 推送到远程仓库

配置说明

{ "git": { "commitMessage": "chore(release): v${version}", // 发布提交信息 "tagName": "v${version}" // Git 标签格式 }, "plugins": { "@release-it/conventional-changelog": { "preset": "angular", // 使用 Angular 规范 "infile": "CHANGELOG.md" // 变更日志文件 } } } 
Enter fullscreen mode Exit fullscreen mode

高级用法

手动指定版本

npx release-it patch # 1.0.0 -> 1.0.1 npx release-it minor # 1.0.0 -> 1.1.0 npx release-it major # 1.0.0 -> 2.0.0 
Enter fullscreen mode Exit fullscreen mode

预发布版本

npx release-it --preRelease=alpha # 1.0.0-alpha.0 
Enter fullscreen mode Exit fullscreen mode

干运行模式

npx release-it --dry-run 
Enter fullscreen mode Exit fullscreen mode

常见问题

Q: 如何跳过某些步骤?

npx release-it --no-git.push # 跳过推送 npx release-it --no-plugins # 跳过变更日志 
Enter fullscreen mode Exit fullscreen mode

Q: 如何自定义变更日志?

{ "plugins": { "@release-it/conventional-changelog": { "preset": { "name": "angular", "types": [ {"type": "feat", "section": "Features"}, {"type": "fix", "section": "Bug Fixes"}, {"type": "docs", "hidden": true} ] }, "infile": "CHANGELOG.md" } } } 
Enter fullscreen mode Exit fullscreen mode

总结

使用 release-it 的好处:

  • 自动化: 减少手动操作
  • 规范化: 强制遵循提交规范
  • 透明化: 自动生成变更日志
  • 简单: 一条命令完成发布

遵循规范的提交信息 + 自动化发布流程 = 高效的版本管理。

Top comments (0)