git hook

git hook

和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。 文档

钩子

在repo的.git/hooks下放钩子脚本:

pre-commit

pre-commit hook是在执行git commit之前执行的脚本, pre-commit阶段可以做lint和test,如果失败将提示并且不做commit操作.

如上图的pre-commit脚本内容:

#!/bin/bash
./node_modules/pre-commit/hook
RESULT=$?
[ $RESULT -ne 0 ] && exit 1
exit 0

安装 pre-commit

npm install pre-commit

pre-commit包会根据package.json的配置执行对应的命令

比如

{
    "scripts": {
        "lint": "./node_modules/.bin/eslint src/"
        "test" "./node_modules/.bin/jest"
    }
    "pre-commit": [
        "lint",
        "test"
    ]
}

pre-commit的时候会执行lint和test.

错误提示

lint的提示:

总结

上面的例子用了npm包pre-commit作为hook工具,可以写别的脚本做其他事情,自动构建,等等.


访问: