// 01 > CONTEXT
Hookpilot 是一款开源的 Git 钩子管理器。它附带一个开箱即用的钩子库(代码检查、格式化、测试、安全检查、提交信息校验、分支保护、大文件检查),外加一个用于添加、恢复、列出和移除钩子的交互式 CLI。
// 02 > THE_PROBLEM
提交前检查缓慢、各机器之间不一致且轻易就能被跳过,因此标准只能在 CI 之后才被强制执行,那已远在提交之后。
每个项目都手动重造一套钩子配置。配置在各个克隆之间漂移,新贡献者一开始什么都没接好,而一个快速的覆盖开关就能让任何人彻底绕过这些关卡。
之前
手搓钩子 · 各克隆间漂移 · 检查随意跳过
// 03 > APPROACH
我构建了一款零配置 CLI,通过一份纳入版本管理的配置,在整个 Git 生命周期中接好标准钩子,并对自定义 Shell 和 Node 脚本提供一等支持。
预定义钩子库
为 pre-commit、commit-msg、pre-push、post-merge 和 post-checkout 等任务提供现成的钩子。
一份纳入版本管理的配置
hooks-config.json 提交一次;每个克隆只需一次 init 即可继承相同的关卡。
Node.jsTypeScriptShellNPM
// 04 > THE_RESULT
一次 init 即可接好整个团队的关卡,而该软件包如今在 npm 上每周下载量已达 50k+。
之前
- 每个仓库手动设置钩子
- 配置在各机器间漂移
- 检查容易被跳过
之后
- 一句 npx hookpilot init
- 共享、纳入版本管理的配置
- 每周 npm 下载量 50k+
“我希望钩子成为最省事的路径,而不是一件你会绕过去的苦差事。一份配置,提交一次,整个团队就处在同一套关卡之上。”