一款命令行文本检查工具,把团队的写作规范转为检查规则,可在编辑器、CI 和代码中离线运行。
evilmartians/lefthook
用 Go 编写的 Git hooks 管理工具,可并行执行提交、推送等钩子命令,适用于 Node.js、Ruby、Python 等多种项目。
可替代:Husky
- Star
- 8,931
- Fork
- 325
- 未关闭 Issue
- 91
- 最近提交
- 昨天
这是什么?
Lefthook 通过一个 lefthook.yml 文件统一管理项目的 Git hooks,可为 pre-commit、pre-push、commit-msg 等钩子配置命令,执行一次 lefthook install 即可接入仓库。它以单个无依赖的二进制文件发布,也可通过 npm、gem、pipx、Go、Homebrew、apt、winget 等方式安装。
每个钩子下的任务可以并行执行,并能通过 glob 模式、排除规则或暂存文件列表筛选需要处理的文件。任务支持通过 tags 分组,用 root 指定子目录运行,也能执行脚本文件或通过 docker run 等运行器执行。个人可用 lefthook-local.yml 跳过或覆盖部分任务,而无需修改团队共享的配置。
配置中定义的命令还可以用 lefthook run 直接运行,适合放置共用的自动修复或 lint 任务。输出内容也可以精简,只显示执行与失败信息。
核心功能
- 01并行执行钩子命令,缩短 pre-commit 和 pre-push 的检查时间。
- 02通过 glob 模式、排除规则或暂存文件列表为每个任务筛选文件。
- 03使用 tags 对任务分组,并可按钩子包含或排除。
- 04支持在子目录、脚本文件和 Docker 容器中运行任务。
- 05允许开发者在本地配置文件中保存个人覆盖设置。
适用场景
- 在每次提交前对暂存文件运行 ESLint、Stylelint 或 RuboCop。
- 推送前执行依赖审计或安全检查。
- 通过 commit-msg 脚本强制执行提交信息模板。
- 团队共享一组自动修复任务,并按需用 lefthook run 运行。
快速上手
- 1
使用 npm 将 lefthook 安装为开发依赖
npm install lefthook --save-dev - 2
在 lefthook.yml 中配置你的钩子
- 3
将钩子安装到 Git 项目中
lefthook install
使用前须知
- 部分配置和使用细节仅在外部文档网站上提供。
标签
常见问题
- lefthook 是什么?
- 用 Go 编写的 Git hooks 管理工具,可并行执行提交、推送等钩子命令,适用于 Node.js、Ruby、Python 等多种项目。 Lefthook 通过一个 lefthook.yml 文件统一管理项目的 Git hooks,可为 pre-commit、pre-push、commit-msg 等钩子配置命令,执行一次 lefthook install 即可接入仓库。它以单个无依赖的二进制文件发布,也可通过 npm、gem、pipx、Go、Homebrew、apt、winget 等方式安装。
- lefthook 可以免费使用吗?用的什么许可证?
- lefthook 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- lefthook 还在维护吗?
- 活跃维护中。lefthook 最近一次提交是在 2026年10月21日。
- lefthook 适合用来做什么?
- 在每次提交前对暂存文件运行 ESLint、Stylelint 或 RuboCop。 推送前执行依赖审计或安全检查。 通过 commit-msg 脚本强制执行提交信息模板。 团队共享一组自动修复任务,并按需用 lefthook run 运行。
- lefthook 怎么安装和运行?
- 使用 npm 将 lefthook 安装为开发依赖: npm install lefthook --save-dev 在 lefthook.yml 中配置你的钩子 将钩子安装到 Git 项目中: lefthook install
- 在哪里获取 lefthook?
- 源代码和安装说明在 GitHub 上:https://github.com/evilmartians/lefthook
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
6276236GoMIT更新于 6天前
一个自动排序并分组 Python import 语句的命令行工具和库。
6962724PythonMIT更新于 16小时前
一个供 AI 编程代理使用的 Git 工作流技能,可将改动整理为规范提交、创建分支并安全推送。
976PythonMIT更新于 7天前
一个基于 Hook 的轻量 React 状态管理库,无需包裹 Provider。
5.9万2176TypeScriptMIT更新于 9天前
一个带语法高亮和 Git 修改标记的终端 cat 替代工具。
6.1万4382RustApache-2.0更新于 前天