vue 代码规范 之 husky

简单的举一些常见的githooks例子

Git Hook 执行时机 说明
pre-commit git commit执行前 可以用git commit --no-verify绕过
commit-msg git commit执行前 可以用git commit --no-verify绕过

首先安装

npm install -D husky

初始化husky

npx husky install .husky

添加一个commit msg钩子

npx husky add .husky/commit-msg "node scripts/verifyCommit.js"

创建verifyCommit.js
添加代码
这段代码逻辑是,找到文件并读取了commit的提交信息,然后使用正则去校验提交信息的格式,如果commit的信息不符合要求,会直接报错并且终止代码的提交。

const msg = require('fs')
  .readFileSync('.git/COMMIT_EDITMSG', 'utf-8')
  .trim()
  
const commitRE = /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/
const mergeRe = /^(Merge pull request|Merge branch)/
if (!commitRE.test(msg)) {
  if(!mergeRe.test(msg)){
    console.log('git commit信息校验不通过')

    console.error(`git commit的信息格式不对, 需要使用 title(scope): desc的格式
      比如 fix: xxbug
      feat(test): add new 
      具体校验逻辑看 scripts/verifyCommit.js
    `)
    process.exit(1)
  }

}else{
  console.log('git commit信息校验通过')
}

在commit-msg执行的时候我们还可以用代码执行之前的钩子,pre-commit,去执行ESLint代码格式,
这样我们在执行git commit的时候,首先会进行ESLint校验,然后在执行commit的log信息格式检查,全部通过后代码才能提交至Git。

npx husky add .husky/pre-commit "npm run lint"

package.json 中创建

"lint": "eslint --fix --ext .js,vue src/"

commit msg参考

feat: 新功能
fix: 修改 bug
docs: 文档
perf: 性能相关
refactor: 代码重构(就是不影响使用,内部结构的调整)
test: 测试用例
style: 样式修改
workflow: 工作流
build: 项目打包构建相关的配置修改
ci: 持续集成相关
revert: 恢复上一次提交(回滚)
wip: work in progress 工作中 还没完成
chore: 其他修改(不在上述类型中的修改)
release: 发版
deps: 依赖相关的修改

你可能感兴趣的:(vue 代码规范 之 husky)