⚡ Better `pre-commit`, re-engineered in Rust
💡 Use Cases
适合需要高性能、多语言支持且希望简化依赖管理的Git钩子场景,特别是从pre-commit迁移的项目。
加速现有项目CI/CD
Problem: 使用Python编写的pre-commit工具在大型项目中运行缓慢,特别是在CI/CD流水线中拖慢构建速度。
Solution: 用prek替换pre-commit,利用Rust实现的性能优势,显著减少钩子运行时间,同时保持配置完全兼容。
Example: 在Apache Airflow或FastAPI这样的Python项目中,将.pre-commit-config.yaml保持不变,只需将pre-commit命令替换为prek run,即可获得2-5倍的性能提升。
简化多语言项目配置
Problem: 在多语言项目中,不同钩子需要各自的语言环境(Python、Node.js、Go等),安装和管理这些依赖很繁琐。
Solution: prek内置了多语言工具链管理,可以自动安装和共享Python、Node.js、Go等运行环境,减少重复配置。
Example: 一个同时包含Python后端和JavaScript前端的项目,prek可以统一管理flake8、prettier、gofmt等钩子的运行环境,无需手动安装多个语言工具。
无Python环境的Git钩子
Problem: 在Docker容器或CI环境中,不想为了运行pre-commit而安装完整的Python运行时和依赖。
Solution: prek是单个二进制文件,无需Python或其他运行时,可以直接下载运行,简化部署。
Example: 在GitHub Actions中,使用j178/prek-action可以直接运行prek,无需先安装Python和pre-commit包,减少CI配置复杂度。
优化Monorepo工作流
Problem: 在Monorepo中,pre-commit需要为每个子项目单独运行,导致重复检查和性能浪费。
Solution: prek内置了workspace模式,可以智能识别变更文件所属的子项目,只运行相关钩子,提高效率。
Example: 一个包含多个微服务的Monorepo,当只修改了service-a的代码时,prek只会运行service-a相关的代码检查钩子,跳过其他服务的检查。
📊 Project Info
- Language
- Rust
- Stars
- ⭐ 5,501
- Forks
- 145
- Today
- +258
- Ranking
- #4
- Collection
- Overall
- Trending Date
- February 5, 2026
🏷️ Topics
5分钟上手 prek
本指南将帮助你在5分钟内安装prek并运行第一个代码提交前检查
🖥️ OS
⚙️ Runtime
📝 Steps
安装 prek
选择适合你操作系统的安装方式。这里推荐使用独立安装脚本(Linux/macOS)或PyPI安装
下载并安装prek
$ # Linux/macOS 使用独立安装脚本
curl -fsSL https://github.com/j178/prek/raw/main/install.sh | sh使用uv安装prek(需要Python环境)
$ # 或者使用PyPI安装(推荐使用uv)
uv pip install prekWindows系统安装命令
$ # Windows PowerShell
irm https://github.com/j178/prek/raw/main/install.ps1 | iex验证安装
检查prek是否正确安装
查看prek版本
$ prek --version创建配置文件
在项目根目录创建.pre-commit-config.yaml文件
创建一个简单的配置文件,包含三个常用检查
$ # 创建配置文件
cat > .pre-commit-config.yaml << 'EOF'
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
EOF运行prek检查
首次运行会自动安装钩子工具,然后检查所有文件
运行所有钩子检查所有文件
$ prek run --all-files安装Git钩子
将prek设置为Git提交前钩子,这样每次git commit时都会自动运行检查
安装Git钩子
$ prek install✅ 验证成功
完成以下操作确认prek已正确配置
- ✓prek --version 显示版本号
- ✓prek run --all-files 成功运行并显示检查结果
- ✓prek install 显示钩子安装成功
- ✓执行 git commit 时自动触发prek检查
⚡ Quick Tips
🔍 Troubleshooting
❓ prek: command not found
→ 确保prek已正确安装并添加到PATH环境变量,或使用完整路径运行
❓ 钩子安装失败或超时
→ 检查网络连接,或尝试设置国内镜像源,使用 --verbose 查看详细错误
❓ Git钩子未触发
→ 确认在正确的Git仓库中运行 prek install,检查.git/hooks/pre-commit文件是否存在
❓ 与现有pre-commit冲突
→ 卸载原有pre-commit:pre-commit uninstall,然后重新安装prek
🎯 Next Steps
探索更多钩子
查看pre-commit-hooks仓库或其他钩子仓库,添加更多检查
配置并行运行
在配置文件中设置priority字段,让多个钩子并行运行提高速度
集成到CI/CD
将prek集成到GitHub Actions或其他CI/CD流程中
查看高级功能
了解monorepo支持、uv集成、内置钩子等高级功能