SuperAPI AI 工具集

prek

编程与开发

查看项目

更新于 10-16 03:16

技能介绍

用途:为项目接入并配置 prek——一个用 Rust 编写、基于 pre-commit 的快速钩子管理器,并在接入时按项目语言与框架推荐合适的钩子。

主要能力与用法:先扫描仓库根目录的语言标记文件(Cargo.toml 对应 Rust,pyproject.toml/setup.py/requirements.txt 对应 Python,package.json 对应 TypeScript/JavaScript,go.mod 对应 Go,Gemfile 对应 Ruby,.sh 等对应 Shell,Dockerfile 对应 Docker;多个标记即多语言项目),检查是否已有 prek.toml;如存在 .pre-commit-config.yaml 可提示迁移(prek 原生读取 YAML,但 TOML 是原生格式且支持 glob 等更多特性)。随后按类别推荐钩子,内置钩子(repo = "builtin")快速、离线、零配置,常作为基础,包括 trailing-whitespace、end-of-file-fixer、check-yaml、check-toml、check-json、check-json5、check-xml、check-merge-conflict、detect-private-key、check-added-large-files、check-case-conflict、check-symlinks、check-executables-have-shebangs、mixed-line-ending、fix-byte-order-marker、no-commit-to-branch 等。语言相关钩子可用社区仓库或本地钩子(repo = "local",language = "system")定义,如 Rust 的 cargo fmt / cargo clippy、Python 的 ruff、TS/JS 的 eslint 与 prettier、Go 的 gofmt 与 go vet、Shell 的 shellcheck。写入前应查询社区仓库当前推荐版本(可通过文档查询工具或 GitHub releases),无查询手段则回退到资料所列版本。新项目生成完整 prek.toml(含内置钩子与检测到的语言钩子及注释),已有项目展示将新增的差异且不重复已有钩子。安装与验证需用户授权后运行 prek install 和 prek run --all-files;未安装时可提示 cargo install prek 或 brew install prek。高级选项:慢检查放在 pre-push 阶段,需同时在顶层配置 default_install_hook_types 并重跑 prek install 才会安装 pre-push shim;用 exclude 全局排除 vendor/generated/node_modules;prek 专有 glob 写法如 files = { glob = "src/**/.py" }。

限制:不配置 CI、GitHub Actions 等 CI 钩子系统;不管理 husky、lint-staged 或 Python pre-commit 配置;未经确认不删除已有钩子;不直接修改 .pre-commit-config.yaml,只生成 prek.toml。Context7 可能不可用;首次 run --all-files 若自动修复钩子重排格式可能失败;rev 固定会过期需定期更新;prek install 需 .git/hooks/ 写权限,共享钩子的 worktree 中会失败。