用途:prek 是 pre-commit 的 Rust 重实现,主要工作是运行检查代码与仓库文件的钩子,例如格式化器、Linter、校验器、安全检查及自定义项目检查,可在提交前或按需触发。
主要能力:安装 pre-commit、pre-push、commit-msg 等 Git 钩子;复用 pre-commit 的钩子生态;管理受支持语言的钩子运行时与工具链;校验配置、更新固定钩子版本、查看已配置钩子。典型任务包括格式化与 Lint 代码,校验 YAML、JSON、TOML、XML 等文件,阻止合并冲突标记、私钥、超大文件和错误行尾。
使用方式:新配置优先使用 prek.toml,仓库类型包括 remote、local、meta、builtin。安装命令有 uv tool install prek、brew install prek、mise use prek、cargo binstall prek、cargo install --locked prek。常用命令:prek install、prek prepare-hooks、prek install --prepare-hooks、prek run、prek run --all-files、prek run <hook-id>、prek list、prek validate-config、prek auto-update、prek util yaml-to-toml、prek util identify <path>。调试可用 prek run -vvv 或 PREK_NO_FAST_PATH=1 prek run。
适用场景:在任意仓库中采用或迁移 Git 钩子;已有 .pre-commit-config.yaml 时通常保留配置并把命令换成 prek,迁移时用 prek install -f 重装钩子;新仓库建议创建 prek.toml。Monorepo 可考虑嵌套配置、.prekignore 和 orphan: true。需要离线或零配置时可用 repo: builtin。
限制:priority 仅在同一配置文件内生效,不跨工作区项目;若需最大上游可移植性,应继续使用 .pre-commit-config.yaml 并避免 prek 专有键;特定钩子语言的兼容性需查阅 Language Support 文档确认。部分细节暂未提供。