前端小纠结--约定式提交和自动生成`changelog`

栏目: 编程语言 · AngularJS · 发布时间: 5年前

内容简介:约定式提交:每次使用约定式提交不需要任何的配置,只需要严格遵守其规范就可以了。 为了保证每次提交的约定式提交使用交互式提交工具(例如:

约定式提交:每次使用 git commit 的时候都需要写 commit message ,如果message style是按照固定的模版格式书写,对于后期的维护和编写 changelog 都有巨大的好处。 而且现在的很多自动生成 changelog 的工具,都是建立在 约定式提交 的基础之上。

约定式提交校验配置

约定式提交不需要任何的配置,只需要严格遵守其规范就可以了。 为了保证每次提交的 commit message 都是遵守 conventional commit spec 所以添加了校验配置.

约定式提交工具

约定式提交使用交互式提交工具(例如: commitizen ),使用 工具 能够保证 约定式提交 个格式是满足规范的。

  1. 推荐使用vs code 插件 commitizen

  2. 命令行方式的 commitizen 配置( vscode commitizen 和命令行方式任选其一即可)

    npm install --save-dev commitizen
    复制代码
    // package.json配置
       {
           scripts: {
               "commit": "git-cz"
           }
       }
    复制代码
    # 使用
     npm run commit   # 进入交互式, 如果commit message在console中换行,请使用'开始
    复制代码
  3. commitizen 的适配器 cz-conventional-changelog

    commitizen 只是一个提交的工具,只有添加了约定格式的适配器才能按照固定格式进行交互式提交, 否则就和普通的 git commit 一样了。(还有其他适配器可选,请参考官方文档) 不同的适配器,提供的约定标准有差异。

    # 建议安装npx这个神器 npm i npx -g
    npx commitizen init cz-conventional-changelog --save-dev --save-exact
    复制代码

    commitizen 工具会在 package.json 中自动添加配置:

    {
        "config": {
            "commitizen": {
                // "path": "cz-conventional-changelog" // 全局安装模式
                "path": "./node_modules/cz-conventional-changelog"
            }
        }
    }
    复制代码
    前端小纠结--约定式提交和自动生成`changelog`

约定式提交格式校验

为了防止出现不满足格式要求的 commit message 出现,还是需要添加上必要的格式校验.

  1. commitlint 校验约定式提交格式

    commitlint 是在 commit message 之前进行校验格式,格式不对不进行提交。

    # 安装
    npm install --save-dev @commitlint/config-conventional @commitlint/cli
    复制代码
    # 添加配置文件commitlint.config.js,工程根目录
    echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
    复制代码
  2. husky 配置 git hooks

    husky官网 husky配置

    有了 git hooks 我们可以做很多提交之前的验证。

    # 安装
    npm i husky --save-dev
    复制代码
    // package.json 配置
    {
    "husky": {
        "hooks": {
          "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", // 配合commitlint使用
          // "pre-commit": "lint-staged" // 配置lint-staged
        }
      }
    }
    复制代码
  3. lint-staged 配置(可选)

    lint-staged

    list-staged 主要配合 linter 用来格式化代码(统一的代码风格),这部是 可选 的。

    lint-staged 是用来让格式化工具只 lint 需要提交的文件,其它文件忽略,这样能够提高效率。

    npm i lint-staged --save-dev
    复制代码
    // package.json 配置
    {
        "lint-staged": {
            "src/**/*.{js,ts,css,vue,tsx,jsx}": [
                "vue-cli-service lint", // npm run lint
                "git add"
            ]
         }
    }
    复制代码

自动生成 changelog

自动生成 changelog 是建立在约定式提交的基础上。

自动生成 changelog 有两种方式:

  1. conventional-changelog-cli 生成 changelog

  2. standard-version 生成 changelog

    standard-version 帮你做了自动打tag,自动生成 changelog 等过程.

conventional-changelog-cli 配置

在约定式提交的基础上来自动生成 changelog ,工具类库开发,推荐直接使用 standard-version ,高度集成了所有东西。

npm install conventional-changelog-cli --save-dev
复制代码
# 基本使用,其它参数参考官方网站
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
复制代码
// package.json配置
{
    scripts: {
        "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
    }
}
复制代码
# 使用
npm run changelog
复制代码

standard-version 配置

# 安装
npm install standard-version --save-dev
复制代码
// package.json 配置
{
    "scripts": {
        "release": "standard-version"
    },
    // standard-version 好多配置看官方文档(可选)
    "standard-version": {
        // 可以配置不需要的环节
        "skip": {
           // bump, changelog, commit, tag
          "tag": true
       }
    }
}
复制代码
# 项目根目录下使用,自行安装npx 模块
# npm i npx -g 
npx standard-version --release-as major
npx standard-version --release-as minor
npx standard-version --release-as patch

npx standard-version --prerelease alpha
npx standard-version --prerelease beta
npx standard-version --prerelease rc

npm run release -- -r minor
npm run release -- -p beta
复制代码

package.json 中的scripts命令组织

{
    scripts: {
        "commit": "git-cz",
        "release": "standard-version",
         "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
        "release:major": "standard-version -r major -n,
        "release:minor": "standard-version -r minor -n,
        "release:patch": "standard-version -r patch -n",
        "prerelease:alpha": "standard-version -p alpha -n,
        "prerelease:beta": "standard-version -p beta -n,
        "prerelease:rc": "standard-version -p rc -n"
    }
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社群运营五十讲

社群运营五十讲

陈菜根 / 北京时代华文书局 / 2018-4-1 / 49.80

物以类聚,人以群分,社群营销不只是简单的建群、卖东西,而是建立一种自动运转的,去中心化的生态圈,让相同爱好的人产生关系,迸发出裂变的火花,创造更多的营销机会。本书从基本的社群概念入手,讲解了社群的五大要素,社群活动的运作,社群的变现模式以及如何做一个社群师等内容,最后再从如何打造社群IP入手,详细讲解了社群IP的定义、分类及操作过程。一起来看看 《社群运营五十讲》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具