j178

j178/prek

Rust 活跃
235
2026-04-06
7.2k
+30
#11
204

项目介绍

⚡ 更强大的 `pre-commit`,采用 Rust 重构实现

⚡ A Git hook manager written in Rust, designed as a drop-in alternative to pre-commit.

智能解读

智能解读 自动生成

prek 是一个用 Rust 重写的 `pre-commit` 替代工具,旨在提供更强大、更高效的代码提交前检查体验。它完全兼容原有的 `pre-commit` 配置和钩子,用户无需修改现有设置即可无缝切换。该项目将多个依赖整合为单一二进制文件,无需 Python 或其他运行时环境,显著提升了执行速度并减少了磁盘空间占用。此外,prek 内置了对 monorepo 工作区的支持,并优化了 Python、Node.js 等语言的工具链安装流程,使依赖管理更高效。其集成的 `uv` 支持进一步简化了 Python 虚拟环境管理。目前,prek 已被 CPython、Apache Airflow 等大型项目采用,适合寻求更快、更轻量级提交前检查工具的开发者。

智能标签

使用场景

使用场景 自动生成

适合需要高性能、多语言支持且希望简化依赖管理的Git钩子场景,特别是从pre-commit迁移的项目。

1

加速现有项目CI/CD

使用Python编写的pre-commit工具在大型项目中运行缓慢,特别是在CI/CD流水线中拖慢构建速度。

用prek替换pre-commit,利用Rust实现的性能优势,显著减少钩子运行时间,同时保持配置完全兼容。

在Apache Airflow或FastAPI这样的Python项目中,将.pre-commit-config.yaml保持不变,只需将pre-commit命令替换为prek run,即可获得2-5倍的性能提升。

2

简化多语言项目配置

在多语言项目中,不同钩子需要各自的语言环境(Python、Node.js、Go等),安装和管理这些依赖很繁琐。

prek内置了多语言工具链管理,可以自动安装和共享Python、Node.js、Go等运行环境,减少重复配置。

一个同时包含Python后端和JavaScript前端的项目,prek可以统一管理flake8、prettier、gofmt等钩子的运行环境,无需手动安装多个语言工具。

3

无Python环境的Git钩子

在Docker容器或CI环境中,不想为了运行pre-commit而安装完整的Python运行时和依赖。

prek是单个二进制文件,无需Python或其他运行时,可以直接下载运行,简化部署。

在GitHub Actions中,使用j178/prek-action可以直接运行prek,无需先安装Python和pre-commit包,减少CI配置复杂度。

4

优化Monorepo工作流

在Monorepo中,pre-commit需要为每个子项目单独运行,导致重复检查和性能浪费。

prek内置了workspace模式,可以智能识别变更文件所属的子项目,只运行相关钩子,提高效率。

一个包含多个微服务的Monorepo,当只修改了service-a的代码时,prek只会运行service-a相关的代码检查钩子,跳过其他服务的检查。

项目健康度

B
70/100
良好
活跃度人气增长社区文档
活跃度 20/23

距上次更新 4 天

人气 19/25

平台 Star TOP 28% · Forks 204

增长 12/25

本周 +210 ⭐ · 本月 +2,442 ⭐

社区 11/17

77 位贡献者 · 0 条平台评论

文档 8/10

缺少 1 项内容

在 GitHub 上查看

项目信息

作者 j178
来源 GitHub
周期 每日
仓库ID j178/prek
最新提交 2026-04-06 21:17:23
第一收录 2026-04-07 08:00:39
最后更新 2026-04-07 08:00:54

赞赏支持

如果本站对你有帮助,欢迎打赏支持

微信打赏码

微信

支付宝打赏码

支付宝

评论 0

登录 后发表评论

加载评论中...

助手