巧用 gitHooks 提交前校验代码

感谢bigAken投稿

在每一个使用 git 进行版本管理的仓库,都有一个目录 .git/hooks,包含 commit 各个阶段 Hooks 的脚本。这些 Hooks 在 git 操作 commit、push、merge 等得时候,可以做前置或者后置的操作,例如 pre-commit 在 git commit 前可以做代码校验,校验代码的时候使用的ESLint,格式化使用的是 prettier。Git 支持的常用钩子见下表,更多请查看官网Hooks:

Git Hook 调用时机 调用时机
pre-commit git commit 执行前 可以用 git commit --no-verify 绕过
commit-msg git commit 执行前 可以用 git commit --no-verify 绕过
pre-merge-commit git merge 执行前 可以用 git merge --no-verify 绕过
pre-push git push 执行前

本文先实践,怎么去写 pre-commit 这个 git hooks,然后介绍 husky,lint-staged,commitlint 的使用

在 git 项目中,.git/hooks下面有很多 hooks 示例如下巧用 gitHooks 提交前校验代码_第1张图片

这些 git hooks 都是.sample结尾的,如果要启用某个 hooks 用可以去掉.sample结尾

实践

npm init -y初始化一个项目,然后git init,然后npm install eslint --save-dev

新建.gitignore文件

node_modules

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

*-lock.json
*.lock

新建.eslintrc,配置 eslint

{
 "rules": {
  // 要求使用分号
  "semi": ["error", "always"],
  // 强制使用一致的反勾号、双引号或单引号
  "quotes": ["error", "double"]
 }
}

新建src目录,然后里面新建index.js,禁止使用快捷键格式化

console.log('object')

根目录新建文件夹.customGitHooks然后 git config 'core.hooksPath' .customGitHooks,主要是设置 gitHooks 的存放目录,因为 gitHooks 默认存放目录是.git/hooks,新建pre-commit,写入如下

#!/bin/sh

echo 'start che

你可能感兴趣的:(java,git,python,vue,npm)