从 Husky 迁移至 Lefthook,每次 Git 提交节省 10% 时间

发布日期:2026-05-05 10:34:39   浏览量 :1
发布日期:2026-05-05 10:34:39  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

最近,我将我们的项目从 Husky 迁移到了 Lefthook——差异立竿见影。

🤔 为什么选择 Lefthook?

几个关键原因:

  • ⚡ 使用 Go 语言编写 → 执行速度极快
  • 🔀 并行执行 → 并发运行任务,而非顺序执行
  • 🧩 配置简单且强大 → 减少样板代码,更易于维护
  • 🧠 更智能的工作流控制 → 灵活的钩子级别优化

⏱️ 实际影响(我们的案例)

之前(Husky)

  • 预提交(pre-commit)时运行所有检查:
    • 代码规范检查(lint)
    • 类型检查
    • 单元测试
  • ⏳ 每次提交约需 17 秒

之后(Lefthook)

  • 预提交(pre-commit):
    • 仅对暂存文件运行代码规范检查 + Prettier 格式化
  • 预推送(pre-push):
    • 类型检查 + 单元测试

👉 结果:

  • ⏱️ 每次提交快约 2 秒(提升约 10%)
  • 💡 开发体验更加流畅(等待时间更少,心流更易保持)

🧠 核心要点

不要让你的预提交(pre-commit)钩子负担过重。

拆分职责:

  • ✅ 快速检查 → 预提交(pre-commit)
  • 🔍 重型验证 → 预推送(pre-push)/ 持续集成(CI)

📦 Lefthook 配置示例(简化版)

---
# https://lefthook.dev/configuration/glob_matcher/
glob_matcher: doublestar
# https://lefthook.dev/configuration/assert_lefthook_installed/
assert_lefthook_installed: true

pre-commit:
  parallel: true
  jobs:
    - name: lint
      glob: '**/*.{js,jsx,ts,tsx}'
      run: pnpm exec eslint --quiet --fix {staged_files}
      # https://lefthook.dev/examples/stage_fixed
      stage_fixed: true

    - name: prettier
      glob: '**/*.{js,jsx,ts,tsx,json,md,yml,yaml}'
      run: pnpm exec prettier --write --ignore-unknown -- {staged_files}
      stage_fixed: true

pre-push:
  parallel: true
  jobs:
    - name: type-check
      run: pnpm type-check
    - name: test
      run: pnpm test

💬 最后总结

如果你的提交感觉缓慢并打断了你的工作流,问题可能不出在你的代码上,而是在你的钩子(hooks)上。

Lefthook 让你在不增加复杂性的前提下,获得性能与控制力。

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部