TypeScript + husky+ lint-staged+ oxlint+ oxfmt+ ultracite

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 原文,安装使用请遵循项目开源协议。