规范化标准 - ESLint 结合 Git Hooks(阻止不规范的代码提交)

一. 什么是 Git Hooks

如同其他许多的版本控制系统一样,Git也具有在特定事件发生之前之后执行特定脚本代码功能。
Git Hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。
按照Git Hooks脚本所在的位置可以分为两类:
1.本地Hooks,触发事件如commit、merge等。
2.服务端Hooks,触发事件如receive等。

钩子都被存储在项目的 .git(是隐藏目录) 目录下的 hooks 子目录中,即项目中的 .git/hooks 文件夹中。

当你用 git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。 这些脚本除了本身可以被调用外,它们还透露了被触发时所传入的参数。 所有的示例都是 shell 脚本,其中一些还混杂了 Perl 代码,不过,任何正确命名的可执行脚本都可以正常使用 —— 你可以用 Ruby 或 Python,或任何你熟悉的语言编写它们。 这些示例的名字都是以 .sample 结尾,如果你想启用它们,得先移除这个后缀。

把一个正确命名(不带扩展名)且可执行的文件(如 pre-commit 或 pre-push)放入 .git 目录下的 hooks 子目录中,即可激活该钩子脚本。 这样一来,它就能被 Git 调用。

常用的两个钩子是 pre-commit 和 pre-push 。



二. 在 git commit 前执行 eslint 检查 js 文件,检查通过才可继续

安装 husky:

cnpm i -D husky

安装 lint-staged:

cnpm i -D lint-staged

package.json 文件:

{
  "scripts": {
    "precommit": "lint-staged"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run precommit"
    }
  },
  "lint-staged": {
    "*.js": [
      "eslint",
      "git add"
    ]
  }
}

此时尝试 git commit 代码,如果 eslint 检查未执行,则还需 在项目根目录下的 .git / hooks 中添加文件 pre-commit:

#!/bin/sh
npm run precommit

并执行如下命令,赋予 pre-commit 文件执行权限:

chomd +x pre-commit

这时候,再尝试 git commit 代码,就能正常执行 eslint 检查了,且检查通过之后会执行 git add;检查不通过则停止动作。
这就阻止了不规范代码的提交。

本文  完。
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值