prek:git 预提交 hook 框架
pre-commit 是一个框架,用于运行用多种语言编写的钩子,并且它管理运行这些钩子的语言工具链和依赖项。
prek 是一个重新设计的 pre-commit 版本,使用 Rust 编写。
它的设计目标是成为一个更快速、无依赖且可直接替代 pre-commit 的方案,同时还提供了许多长期以来被要求的功能。
特性
- 🚀 单个二进制文件,无需依赖,不需要 Python 或任何其他运行时环境。
- ⚡ 比
pre-commit 更快,并且在磁盘空间使用方面更高效。
- 🔄 完整兼容原始的
pre-commit 配置文件和钩子。
- 🏗️ 内置对 monorepos(即 workspace 模式)的支持。
- 🐍 与
uv 集成,用于管理 Python 虚拟环境和依赖项。
- 🛠️ 改进了 Python、Node.js、Bun、Go、Rust 和 Ruby 的工具链安装,这些工具链在钩子之间共享。
- 📦 内置了一些常用钩子的 Rust 原生实现 (Built-in)。
https://github.com/j178/prek
https://prek.j178.dev/