配置 git 提交校验规则以及提交前进行代码的校验和修复

发布时间 2023-09-15 17:38:34作者: 这么拼都不秃

git 篇

前言

今日分享的话题是 配置 git 提交校验规则以及提交前进行代码 lint 的校验和修复

  • ? 1、我们先了解一下当我们执行 git commit -m 'XXX'的时候,都会执行什么(在安装了 husky 的情况下)

    • ? 1.1 首先我们下载安装 husky 的 3.*版本

      npm install husky -D
      
    • ? 1.2 首先我们执行

      git add ./
      git commit -m 'XXX'
      

      当我们执行完 git commit 命令之后(我只里只是说一下大致的执行顺序,git 还有其他 hook)

      1. 首先先会去我们的 package.json 中获取到 pre-commit 钩子的执行命令
      1. 然后吧我们这个命令拿到之后会在 husky 包中的 run.js=>lib/runner/index.js 文件中会执行我们的命令
      sh myprecommit.sh
      #里面内容应该就是我们的校验命令
      
      1. 这个命令可能是校验我们代码的规范如:lint-staged
      {
        "lint-staged": {
          "*.scss": [
            "prettier --write",
            "stylelint -s scss --config 你的stylelint文件 --fix",
            "git add"
          ],
          ".{ts,tsx}": [
            "node  你的prettier文件 --write",
            "node  你的eslint文件",
            "git add"
          ]
        }
      }
      
      1. 然后会执行我们 package.json 中的的配置项中的这个配置项中的命令
        ❓:为啥我直接执行那些 shell 命令不行呢会报错?
        ?:所处环境不同,由于一些依赖不是全局安装的,所以无法找到该命令,而你将该脚本写在 package.jons 的 script 中,则 npm 会自动查找本地项目的 node_modules/.bin 目录,并将其添加到临时的 PATH 环境变量中
    • ? 1.3 当我们前面的那些校验设置完毕之后,接下来会解析我们的 commit 信息

      首先他会执行我们 pageage.json 中的 hook: commit-msg:"你的命令"

      以下是思路:

      ❓:怎么获取我们的提交信息?
      ?: Husky 库提供的一个环境变量,用于获取 Git 的提交参数


      ❓:写一个自定义正则表达式去匹配这个信息是否正确

      ?
      /^你的正则/.test(commitMsg)
      
      // 如果这个通过则啥也不干没通过则终止退出terminal