vue3 + Element-plus 开发后台管理系统(5)

247 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

编程规范分析

上一篇中我们使用 git cz 去代替 git commit 去进行提交,但是如果有的同学,忘记使用 git cz 进行提交,那么我们之前的配置不就全部白费了吗?那么我们有没有办法限制这种错误的发生呢?

其回答必然是肯定的

咱们先来分析一下我们的预期效果

我们希望
当通过 git 进行提交时,如果提交的内容不符合约定的提交规范时,git 会阻止当前提交,并抛出错误

为了实现这个目的,我们就需要引入一个概念,他就是 Git hooks(git 钩子 || git 回调)

也就是在 git 执行某个操作之前或之后进行一些其他的操作(就像是 Vue 的路由守卫)

Git hooks 的详细介绍,可以点击这里查看

而在这里我们具体用到的钩子其实只有两个

Git Hook调用时机说明
pre-commitgit commit 执行前它不接受任何参数,并且在获取提交日志消息并进行提交之前被调用。脚本 git commit 以非零状态退出会导致命令在创建提交之前中止。可以用 git commit --no-verify 绕过
commit-msggit commit 执行前可用于将消息规范化为某种项目标准格式。还可用于在检查消息文件后拒绝提交。可以用 git commit --no-verify 绕过

用白话来说:
1、commit-msg : 可以用来规范化标准格式,并且可以根据指定的内容决定要不要拒绝本次提交
2、pre-commit : 会在提交之前被调用,并且可以根据指定的内容决定要不要拒绝本次提交

下面我们要做的事就是使用这两个钩子配合 commitlint 进行提交信息的校验

先说明一下要用到的两个工具
1、commitlint:用于检查提交信息
2、 husky: 就是 git hooks 工具

注意:npm 需要在 7.x 以上

现在我们就来安装一下这两个工具

commitlint

1、安装依赖

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

2、创建 commitlint.config.js 文件

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

3、打开 commitlint.config.js,增加配置项(具体配置点此查看

module.exports = {
  // 继承的规则
  extends: ['@commitlint/config-conventional'],
  // 定义规则类型
  rules: {
    // type 类型定义,表示 git 提交的 type 必须在以下类型范围内
    'type-enum': [
      2,
      'always',
      [
        'feat', // 新功能 feature
        'fix', // 修复 bug
        'docs', // 文档注释
        'style', // 代码格式(不影响代码运行的变动)
        'refactor', // 重构(既不增加新功能,也不是修复bug)
        'perf', // 性能优化
        'test', // 增加测试
        'chore', // 构建过程或辅助工具的变动
        'revert', // 回退
        'build' // 打包
      ]
    ],
    // subject 大小写不做校验
    'subject-case': [0]
  }
}

注意:确保保存为 UTF-8 的编码格式,否则可能报错

husky

1、安装依赖

npm install husky --save-dev

2、启动 husky,生成 .husky 文件夹

npx husky install

3、在 package.json 中生成 prepare 指令( 需要 npm > 7.0 版本 )

npm set-script prepare "husky install"

4、执行 prepare 指令

npm run prepare

5、执行成功,提示

husky - Git hooks installed

6、添加 commitlint 的 hook 到 husky中,并在 commit-msg 的 hooks 下执行以下指令

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

7、此时,.husky 的文件结构

WX20220801-212206.png

至此,不符合规定的提交信息将不会被提交

WX20220801-212534.png