Git钩子工具lefthook

2024-05-21 08:16:06 浏览数 (1)

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
代码语言:javascript复制
#!/bin/sh

echo 'pre-commiit ...'
  • .lefthook/post-commit/post-commit.sh
代码语言:javascript复制
#!/bin/sh

echo 'post-commiit ...'
  • .lefthook/pre-push/pre-push.js
代码语言:javascript复制
console.log('pre-push ...');

接下来,执行 git commit 命令,来触发 pre-commit 和 post-commit hooks。

代码语言:javascript复制
$ git commit -m 'test' src/index.ts

╭──────────────────────────────────────╮
│ 


	

0 人点赞