乐趣区

关于前端:标准化编程规范解决方案之Commitizen

在前两节咱们通过 prettier + ESLint 解决了代码格局的问题,然而咱们之前也说过 编程标准 指的可不仅仅只是 代码格局标准

除了 代码格局标准 之外,还有另外一个很重要的标准就是 git 提交标准!

在当初的我的项目开发中,通常状况下,咱们都会通过 git 来治理我的项目。只有通过 git 来治理我的项目,那么就必然会遇到应用 git 提交代码的场景

当咱们执行 git commit -m "形容信息" 的时候,咱们晓得此时必须增加一个形容信息。然而中华文化博大精深,不同的人去填写形容信息的时候,都会依据本人的了解来进行形容。

而很多人的形容“天马行空”,这样就会导致他人在看你的提交记录时,看不懂你说的什么意思?不晓得你以后的这次提交到底做了什么事件?会不会存在潜在的危险?

比如说,咱们来看这几条提交记录:

你可能设想失去它们经验了什么吗?

所以 git 提交标准 势在必行。

对于 git 提交标准 来说,不同的团队可能会有不同的规范,那么明天就以目前应用较多的 Angular 团队标准 延长出的 Conventional Commits specification(约定式提交)为例,来为大家分享 git 提交标准

约定式提交标准要求如下:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

--------  翻译 -------------
    
< 类型 >[可选 范畴]: < 形容 >

[可选 注释]

[可选 脚注]

其中 <type> 类型,必须是一个可选的值,比方:

  1. 新性能:feat
  2. 修复:fix
  3. 文档变更:docs
  4. ….

也就是说,如果要依照 约定式提交标准 来去做的化,那么你的一次提交形容应该是这个样子的:

我想大家看到这样的一个提交形容之后,心里的感觉应该和我一样是解体的!要是每次都这么写,写到猴年马月了!

如果你有这样的困惑,那么”祝贺你“,接下来我将分享这个这个问题的解决办法!

Commitizen 助你规范化提交代码

在下面咱们讲了 约定式提交标准,咱们晓得如果严格装置 约定式提交标准,来手动进行代码提交的话,是一件十分苦楚的事件,然而 git 提交标准的解决 又势在必行,那么怎么办呢?

你遇到的问题,也是其他人所遇到的!

通过了很多人的左思右想,就呈现了一种叫做 git 提交规范化工具 的货色,而咱们要学习的 commitizen 就是其中的佼佼者!

commitizen 仓库名为 cz-cli,它提供了一个 git cz 的指令用于代替 git commit,简略一句话介绍它:

当你应用 commitizen 进行代码提交(git commit)时,commitizen 会提交你在提交时填写所有必须的提交字段!

这句话怎么解释呢?不必焦急,上面咱们就来装置并且应用一下 commitizen,应用实现之后你天然就明确了这句话的意思!

  1. 全局装置Commitizen

    npm install -g commitizen@4.2.4
  2. 装置并配置 cz-customizable 插件

    1. 应用 npm 下载 cz-customizable

      npm i cz-customizable@6.3.0 --save-dev
    2. 增加以下配置到 package.json

      ...
        "config": {
          "commitizen": {"path": "node_modules/cz-customizable"}
        }
  3. 我的项目根目录下创立 .cz-config.js 自定义提醒文件

    module.exports = {
      // 可选类型
      types: [{ value: 'feat', name: 'feat:     新性能'},
        {value: 'fix', name: 'fix:      修复'},
        {value: 'docs', name: 'docs:     文档变更'},
        {value: 'style', name: 'style:    代码格局(不影响代码运行的变动)' },
        {
          value: 'refactor',
          name: 'refactor: 重构(既不是减少 feature,也不是修复 bug)'
        },
        {value: 'perf', name: 'perf:     性能优化'},
        {value: 'test', name: 'test:     减少测试'},
        {value: 'chore', name: 'chore:    构建过程或辅助工具的变动'},
        {value: 'revert', name: 'revert:   回退'},
        {value: 'build', name: 'build:    打包'}
      ],
      // 音讯步骤
      messages: {
        type: '请抉择提交类型:',
        customScope: '请输出批改范畴(可选):',
        subject: '请简要形容提交(必填):',
        body: '请输出详细描述(可选):',
        footer: '请输出要敞开的 issue(可选):',
        confirmCommit: '确认应用以上信息提交?(y/n/e/h)'
      },
      // 跳过问题
      skipQuestions: ['body', 'footer'],
      // subject 文字长度默认是 72
      subjectLimit: 72
    }
  4. 应用 git cz 代替 git commit
    应用 git cz 代替 git commit,即可看到提醒内容

那么到这里咱们就曾经能够应用git cz 来代替了 git commit 实现了规范化的提交诉求了,然而以后仍然存在着一个问题,那就是咱们必须要通过 git cz 指令才能够实现规范化提交!

那么如果有马虎的共事,它们遗记了应用 git cz 指令,间接就提交了怎么办呢?

那么有没有形式来限度这种谬误的呈现呢?

请看下一节分享《标准化编程标准解决方案之 Git Hooks》

退出移动版