Commitizen约定式提交

623 阅读2分钟

约定式提交配置

Commitizen

  1. 全局安装commitizencz-conventional-changelog
pnpm install -g commitizen 
pnpm install -g cz-conventional-changelog
  1. 在电脑用户的根目录创建.czrc文件,不然使用的时候会进入命令行
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
  1. 安装并配置cz-customizable插件,用来自定义commitizen提示

    1. 安装cz-customizable

      pnpm install cz-customizable --save-dev
      
    2. 添加以下配置到package.json

      "config": {
          "commitizen": {
          "path": "node_modules/cz-customizable"
          }
      }
      
  2. 项目根目录下创建.cz-config.js文件来自定义提示

    module.exports = {
      // 可选类型
      types: [
        {
          value: ':sparkles: feat',
          name: '✨ feat:          新功能'
        },
        {
          value: ':bug: fix',
          name: '🐛 fix:           修复'
        },
        {
          value: ':memo: docs',
          name: '📝 docs:          文档变更'
        },
        {
          value: ':lipstick: style',
    ​
          name: '💄 style:         代码格式(不影响代码运行的变动)'
        },
        {
          value: ':recycle: refactor',
    ​
          name: '♻️  refactor:      重构(既不增加feature,也不是修复bug)'
        },
        {
          value: ':zap: perf',
          name: '⚡️ perf:          性能优化'
        },
        {
          value: ':white_check_mark: test',
          name: '✅ test:          增加测试'
        },
        {
          value: ':wrench: chore',
          name: '🔧 chore:         构建过程或辅助工具的变动'
        },
        {
          value: ':rewind: revert',
          name: '⏪ revert:        回退'
        },
        {
          value: ':rocket: build',
          name: '🚀 build:         打包'
        }
      ],
    ​
      // 步骤
    ​
      messages: {
        type: '请选择提交的类型:',
        customScope: '情输入修改的范围(可选)',
        subject: '请简要描述提交(必填)',
        body: '请输入详细描述(可选)',
        footer: '请输入要关闭的issus(可选)',
        confirmCommit: '确认要使用以上信息提交?(y/n)'
      },
      // 默认长度72
      subjectLimit: 72
    }
    ​
    ​
    

生成 Change log

如果你的所有 commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成。

生成的文档包括以下三个部分。

  • New features
  • Bug fixes
  • Breaking changes.

每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。

  1. 安装 conventional-changelog-cli

    pnpm install -g conventional-changelog-cli

  2. 通过执行命令生成 CHANGELOG.md 文件:

conventional-changelog -p angular -i CHANGELOG.md -s

上面 changelog 命令不会覆盖以前的 CHANGELOG,只会在 CHANGELOG.md头部加上自从上次发布以来的变动。

利用standard-version 自动生成changelog

利用standard-version可以在发新版本的时候自动生成changelog,配合自定义配置生成丰富的changeglog

  1. 安装standard-version

pnpm install -D standard-version

  1. package.json里添加
"scripts": {
    "release": "standard-version"       
}

3.执行pnpm run release 就会根据你的commit信息自动生成 CHANGELOG.md 文件。当你的commit type是 feat和fix的时候执行这 个命令,它会自增版本号。

standard-version 增加表情设置

为了让生成的CHANGELOG 带着gitmoji表情,我们需要额外配置一下,因为我们在上边配置的.cz-config.js里type的value是带着表情的,所以它读不到对应的type生成的更改日志是没法分类的,因为standard-version默认的预设是 angular。所以这里我们装一个别人写好的工具:conventional-changelog-gitmoji-config

  1. 安装

pnpm i -D conventional-changelog-gitmoji-config

  1. 然后在package.json里更改之前的配置
"scripts": {
    "release": "standard-version --preset gitmoji-config"
 }

这样就可以使用pnpm run release自动发布、打tag、和生成CHANGELOG了。