Git 提交时自动对暂存代码执行 lint 与格式化,保障仓库代码质量
husky 挂载 Git 钩子,lint-staged 只处理暂存文件以提速,oxlint/oxfmt 提供高速检查与格式化
✓ 只检查暂存文件速度快✓ lint 与格式化一体
方案简介
这是 Turborepo 官方仓库(vercel/turborepo)自身采用的开发工作流配方,从其 package. 依赖清单中可直接读到组合证据:husky 8.0.3、lint-staged 16.4.0、oxfmt 0.63.0、oxlint 1.78.0,并配有 ultracite 7.4.3 与两套 TypeScript 版本(typescript@6 与 typescript@7)。这套组合的意图是:在 Git 提交环节通过 husky 钩子触发 lint-staged,对暂存文件执行 oxlint 检查与 oxfmt 格式化,从而在代码进入仓库前自动守住质量关。这种「钩子 + 暂存区过滤 + 高速 lint 工具」的三层组合是大型 Rust/TypeScript monorepo 常用的代码质量方案,适合任何希望强制提交前代码规范的团队复用。
亮点与能力
- 基于 Git 钩子的提交时代码检查流程
- lint-staged 限定只处理暂存文件,减少等待
- oxlint 提供高速 lint 检查
- oxfmt 负责代码格式化
- ultracite 提供开箱即用的 lint 规则配置
- 同时维护 TypeScript 6 与 7 两个版本以验证兼容性
组成与分工
- husky:管理 Git 钩子,在 commit 等时机触发脚本
- lint-staged:只对 git 暂存区文件执行命令,避免全量检查
- oxlint:Rust 系高速 lint 工具,执行代码规范检查
- oxfmt:Rust 系代码格式化工具
- ultracite:集中管理 lint 配置规则
- typescript(双版本别名):仓库同时锁定 TS6 与 TS7 进行开发验证
使用与配置要点
参考该仓库的实践:在 package. 中声明上述依赖后,husky 安装 Git 钩子,lint-staged 在钩子中调用 oxlint 与 oxfmt 处理暂存文件。此外仓库还引入 @taplo/cli 用于 TOML 文件检查、semver 用于版本号处理、@types/node 提供 Node 类型定义,共同构成完整的仓库工程化依赖面。
优缺点
- ✓ 只检查暂存文件速度快
- ✓ lint 与格式化一体
出处
本方案挖掘自开源项目 vercel/turborepo,方案内容与实施命令均来自其 README 原文。
方案出处
vercel/turborepo:Build system optimized for JavaScript and TypeScript, written in Rust 31068 star Build system optimized for JavaScript and TypeScript, written in Rust
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。