Lefthook“快而可控”的 Hooks 管理工具

Lefthook 是一款基于 Go 语言开发的高性能 Git 钩子管理器,适用于 Node.js、Ruby、Python 及其他各类技术栈的项目。你可以通过 Go 工具、NPM、gem 或 pipx 包管理器轻松完成安装,随后在简洁的 lefthook.yml 配置文件中定义钩子规则,执行 lefthook install 命令即可启用。
这款工具支持并行执行钩子命令,可通过通配符 / 正则表达式筛选指定文件,兼容脚本执行、标签分组、Docker 容器运行,还支持本地配置覆盖;这些特性兼顾了执行速度与使用灵活性,让你对代码检查流程完全可控。
借助 Lefthook,你能在代码提交(commit)、推送(push)环节,自动完成代码语法校验与合规检查,整个过程执行高效且无额外依赖,既大幅节省开发时间,又能毫不费力地保持项目代码的整洁规范。

在团队协作中,Git hooks 常常被寄予厚望:
提交前跑格式化、检查代码风格、拦住明显错误。
但现实往往是——配置分散、执行缓慢、不同成员环境不一致,最后被绕过或直接废弃。

Lefthook 正是为解决这些问题而生的。

Lefthook 是什么?

Lefthook 是一款基于 Go 语言开发的高性能 Git 钩子管理器,用于统一管理 pre-commitpre-push 等 Git hooks 的执行逻辑。

它不关心你的项目使用什么语言或框架,Node.js、Ruby、Python,甚至纯脚本项目都可以直接使用。

项目由 Evil Martians 维护,整体设计非常偏工程实践,目标明确:
让本地代码检查既快又可靠。

为什么需要 Lefthook?

原生 Git hooks 存在几个长期问题:

  • hooks 是本地文件,不进版本控制
  • 团队成员配置容易不一致
  • 脚本一复杂,执行速度明显拖慢提交
  • 跨语言项目难以统一管理

Lefthook 的思路很直接:
把 hooks 当成项目的一部分,用配置文件统一描述,用高性能执行器调度。

核心特性概览

高性能执行(Go 实现)

Lefthook 本体由 Go 编写,启动成本极低。
相较脚本型方案,在频繁 commit 的场景下差异非常明显。

简洁、集中式配置

所有 hooks 都写在一个 lefthook.yml 中,例如:

pre-commit:
  parallel: true
  commands:
    lint:
      run: npm run lint
    test:
      run: npm test

配置清晰、可读、可审查,直接进 Git 仓库。

并行执行,减少等待时间

多个检查任务可以并行运行,而不是串行阻塞。
这在包含 lint + test + typecheck 的项目中非常关键。

精准的文件筛选能力

支持 通配符和正则表达式,只对相关文件触发检查,例如:

  • 只改了 .js 文件,不跑 Python 测试
  • 只改了文档,不跑构建流程

这让 hooks 变得“聪明”,而不是“暴力”。

脚本、标签、Docker 全支持

Lefthook 不限制你怎么跑命令:

  • 本地脚本
  • npm / pip / bundle 命令
  • Docker 容器内执行
  • 通过标签(tags)对任务分组、复用

复杂项目也能保持结构清晰。

本地配置覆盖(Local Override)

在团队统一规则之上,允许个人做本地调整,
兼顾一致性与现实环境差异。

安装方式灵活

Lefthook 支持多种安装渠道:

  • Go 工具链
  • npm
  • Ruby gem
  • pipx

安装后只需:

lefthook install

即可启用项目中的 hooks 配置。

Github:https://github.com/evilmartians/lefthook
油管:https://youtu.be/IWn5syUGg8w

Scroll to Top