lefthook 是什么
lefthook是由 Go 语言开发的适用于多种编程语言项目的快速且强大的 Git 钩子管理器,它可以在项目构建过程中执行一些任务,例如检查代码格式、检查依赖、测试、覆盖率检查、静态分析、持续集成等。官方介绍它的几个特点: 快速,它是用 Go 编写的,可以并行运行命令。 强大,它可以控制执行通过命令传递的执行和文件。 简单,它是一个无依赖的二进制文件,可以在任何环境中工作。
下面看看我们怎样在 Git 仓库中使用 lefthook。
安装 lefthook
代码语言:javascript复制npm install lefthook --save-dev
安装完成后会在项目的根目录下创建一个 lefthook.yml 文件,如果没有产生的话也可以自己创建一个。lefthook 的配置文件可以使用下面这些文件名。
lefthook.yml
.lefthook.yml
lefthook.yaml
.lefthook.yaml
lefthook.toml
.lefthook.toml
lefthook.json
.lefthook.json
一个例子
看一个简单的例子,看看 lefthook 怎么使用,修改 lefthook.yml 文件,定义 pre-commit,post-commit,pre-push 三个钩子,如下所示:
代码语言:javascript复制pre-commit:
parallel: true
scripts:
"pre-commit.sh":
runner: bash
post-commit:
parallel: true
scripts:
"post-commit.sh":
runner: bash
pre-push:
parallel: true
scripts:
"pre-push.js":
runner: node
这里定义了三个钩子,分别对应 .lefthook/pre-commit/pre-commit.sh,.lefthook/post-commit/post-commit.sh,.lefthook/pre-push/pre-push.js 三个脚本。这里脚本路径必须放在对应的钩子文件夹下,内容如下:
- .lefthook/pre-commit/pre-commit.sh
#!/bin/sh
echo 'pre-commiit ...'
- .lefthook/post-commit/post-commit.sh
#!/bin/sh
echo 'post-commiit ...'
- .lefthook/pre-push/pre-push.js
console.log('pre-push ...');
接下来,执行 git commit 命令,来触发 pre-commit 和 post-commit hooks。
代码语言:javascript复制$ git commit -m 'test' src/index.ts
╭──────────────────────────────────────╮
│