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)