全量 lint 一个中大型项目可能要一两分钟,但一次提交往往只改了几个文件。lint-staged 利用 git diff --staged 拿到本次真正变动的文件清单,只把它们喂给 eslint/prettier/stylelint,再配合 husky 的 pre-commit 钩子,提交前校验从「拖累团队」变成「毫秒级无感」。
它还能在 lint 通过后自动把格式化结果 git add 回暂存区,避免「lint 改了代码但提交的是旧版」的尴尬。配置写在 package.json 的 lint-staged 字段或单独文件,按扩展名映射命令,例如 *.js 跑 eslint --fix。简单但它是代码规范落地链路里最关键的一环。
// package.json —— lint-staged 配置 { "lint-staged": { "*.{js,jsx,ts,tsx}": [ "eslint --fix", // 先自动修复 "prettier --write" // 再统一格式 ], "*.{css,scss,json,md}": "prettier --write", "*.{ts,tsx}": "tsc --noEmit" // 顺带做一次类型检查 }, "scripts": { "prepare": "husky" } } // .husky/pre-commit 只需一行: // npx lint-staged