代码git提交规范CommitLint使用

一、Commitlint 是什么

  在多人协作的背景下,git 仓库和 workflow 的作用很重要。而对于 commit 提交的信息说明存在一定规范,现使用 commitlint + husky 规范 git commit -m "" 中的描述信息。

  一句话说,当我们运行 git commmit -m 'xxx' 时,用来检查 xxx 是否满足固定格式的工具。

二、为什么使用 commitlint?

  我们都知道,在使用 git commit 时,git 会提示我们填入此次提交的信息。

  可不要小看了这些 commit,团队中规范了 commit 可以更清晰的查看每一次代码提交记录,还可以根据自定义的规则,自动生成 changeLog 文件。

三、如何使用?

1、commitlint: 安装,制定提交规范(采用默认)

npm install --save-dev @commitlint/config-conventional @commitlint/cli

2、生成配置文件commitlint.config.js,当然也可以是 .commitlintrc.js

echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js

3、husky: 还要为 git 配置 husky ,对 git 的 commit 操作进行校验。

  husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等

npm install husky --save-dev

4、 在 package.json 中引入 husky

// package.json
{
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }  
  }
}

  这段配置告诉了git hooks,当我们在当前项目中执行 git commit -m '测试提交' 时将触发commit-msg事件钩子并通知husky,从而执行 commitlint -E HUSKY_GIT_PARAMS命令,也就是我们刚开始安装的./node_modules/.bin/commitlint,它将读取commitlint.config.js配置规则并对我们刚刚提交的测试提交这串文字进行校验,若校验不通过,则在终端输出错误,commit终止。

四、CommitLint 提交规范

  commitlint 推荐我们使用 config-conventional 配置去写 commit

提交格式(注意冒号后面有空格)
git commit -m <type>[optional scope]: <description>

type :用于表明我们这次提交的改动类型,是新增了功能?还是修改了测试代码?又或者是更新了文档? 
optional scope:一个可选的修改范围。用于标识此次提交主要涉及到代码中哪个模块。
description:一句话描述此次提交的主要内容,做到言简意赅。

  常用的 type 类型:其实项目团队内部也可以自定义一些类型,只要自己清楚就可以了

五、初始化@commitlint/cli的配置文件

  在项目根目录创建名为commitlint.config.js的文件,代码如下:

/**
* feature:新功能
* update:更新某功能
* fixbug:修补某功能的bug
* refactor:重构某个功能
* optimize: 优化构建工具或运行时性能
* style:仅样式改动
* docs:仅文档新增/改动
* chore:构建过程或辅助工具的变动
*/
module.exports = {
  extends: [
    '@commitlint/config-conventional'
  ],
  rules: {
    'type-enum': [2, 'always', [
      'feature', 'update', 'fixbug', 'refactor', 'optimize', 'style', 'docs', 'chore'
    ]],
    'type-case': [0],
    'type-empty': [0],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never'],
    'header-max-length': [0, 'always', 72]
  }
};
// 这些配置是什么意思?请自行查阅commitlint文档

  使用 commitlint 可以规范我们每一次的 commit,我们可以用来自动生成 changeLog 等文件,方便代码管理。

  具体可学习以下链接: 前端codeLint-- 为项目集成ESLint、StyleLint、commitLint实战和原理

posted @ 2017-07-17 20:11  古兰精  阅读(2092)  评论(0编辑  收藏  举报