prek:git 预提交 hook 框架
pre-commit 是一个可运行用多种语言编写的钩子脚本的框架,它负责管理运行这些钩子脚本所需的语言工具链和依赖项。
prek 是 pre-commit 的重新设计版本,用 Rust 编写而成。它旨在成为一个更快、无依赖且可直接替换 pre-commit 的工具,同时还提供了一些长期以来用户所期望的额外功能。
[!警告]
prek 目前还未准备好投入生产使用。部分子命令和语言相关功能尚未实现。有关直接替换时存在的差距,请查看 待办事项。
已有 一些项目 采用了它,欢迎试用 - 我们期待您的反馈!
功能特性
- 单个二进制文件,无任何依赖,无需 Python 或其他运行时环境。
- 比
pre-commit 更快,磁盘占用空间仅为其一半。
- 与原始的 pre-commit 配置和钩子脚本完全兼容。
- 内置对单仓库多包(monorepos)的支持,即 工作区模式。
- 与
uv 集成,用于管理 Python 虚拟环境和依赖项。
- 针对 Python、Node.js、Go、Rust 和 Ruby 改进了工具链安装方式,钩子脚本之间可共享。
- 一些常见钩子脚本的 内置 Rust 原生实现。
https://github.com/j178/prek
https://prek.j178.dev/