面向 JavaScript 与 TypeScript 的零配置 linter 和格式化工具,一条命令即可接入 Biome、ESLint 或 Oxlint。
lint-staged/lint-staged
在提交前只对 git 暂存区的文件运行格式化和代码检查工具,防止问题代码进入仓库。
- Star
- 14,757
- Fork
- 479
- 未关闭 Issue
- 2
- 最近提交
- 7天前
这是什么?
lint-staged 会针对当前 git 暂存区中的文件运行任意 shell 命令,例如 Prettier、ESLint 或 Stylelint。在整个项目上运行这些工具通常较慢,还可能报出无关的问题,因此 lint-staged 只检查本次提交真正会包含的文件。
任务通过 JSON 对象配置(可写在 package.json、.lintstagedrc 文件或 JS/TS 配置中),把 glob 模式映射到对应命令,匹配到的文件会作为参数传入。命令可以并发或顺序执行,也可以用 JavaScript 函数实现自定义逻辑。任务产生的修改(如自动修复)会被重新加入本次提交。
默认情况下,lint-staged 在运行任务前会创建 git stash 作为备份,任务失败时回滚修改。它通常通过 Husky 等 pre-commit 钩子接入,并支持为 monorepo 中的每个包配置独立的配置文件。
核心功能
- 01对通过 glob 模式匹配的暂存文件运行任意 shell 命令。
- 02自动将 Prettier、ESLint --fix 等任务产生的修复加入提交。
- 03提交前用 git stash 备份工作区状态,失败时恢复。
- 04支持串行、并行以及有序的任务执行。
- 05可在 package.json、点文件或 JS/TS 配置文件中配置。
- 06支持在 monorepo 中按目录使用独立配置。
适用场景
- 在每次提交前对 JavaScript 和 TypeScript 文件运行 Prettier 和 ESLint。
- 仅在 CSS 或 SCSS 文件变更时使用 Stylelint 检查。
- 通过自定义任务阻止提交特定类型的文件,例如 PDF。
- 为 monorepo 中的不同包应用各自的代码检查配置。
快速上手
- 1
将 lint-staged 安装为开发依赖
npm install --save-dev lint-staged - 2
设置 pre-commit Git 钩子以运行 lint-staged(Husky 是常用选择)
- 3
在 package.json 或配置文件中配置 lint-staged,例如对 JS 文件运行 ESLint
- 4
暂存部分文件并运行 git commit 以触发检查
git commit
使用前须知
- 需要额外配置:需要 Git 钩子管理工具以及 ESLint 或 Prettier 等已配置的工具。
- 它会执行影响工作区的 Git 操作,默认会创建备份 stash。
收录于专题
标签
常见问题
- lint-staged 是什么?
- 在提交前只对 git 暂存区的文件运行格式化和代码检查工具,防止问题代码进入仓库。 lint-staged 会针对当前 git 暂存区中的文件运行任意 shell 命令,例如 Prettier、ESLint 或 Stylelint。在整个项目上运行这些工具通常较慢,还可能报出无关的问题,因此 lint-staged 只检查本次提交真正会包含的文件。
- lint-staged 可以免费使用吗?用的什么许可证?
- lint-staged 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- lint-staged 还在维护吗?
- 活跃维护中。lint-staged 最近一次提交是在 2026年10月31日。
- lint-staged 适合用来做什么?
- 在每次提交前对 JavaScript 和 TypeScript 文件运行 Prettier 和 ESLint。 仅在 CSS 或 SCSS 文件变更时使用 Stylelint 检查。 通过自定义任务阻止提交特定类型的文件,例如 PDF。 为 monorepo 中的不同包应用各自的代码检查配置。
- lint-staged 怎么安装和运行?
- 将 lint-staged 安装为开发依赖: npm install --save-dev lint-staged 设置 pre-commit Git 钩子以运行 lint-staged(Husky 是常用选择) 在 package.json 或配置文件中配置 lint-staged,例如对 JS 文件运行 ESLint 暂存部分文件并运行 git commit 以触发检查: git commit
- 在哪里获取 lint-staged?
- 源代码和安装说明在 GitHub 上:https://github.com/lint-staged/lint-staged
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Black 是一款风格固定、结果确定的 Python 代码格式化工具,直接改写文件并尽量产生最小差异。
一个自动排序并分组 Python import 语句的命令行工具和库。
一个用于管理和运行多语言 pre-commit 钩子的框架,在每次 Git 提交前检查代码。
可插件扩展的 JavaScript 代码检查工具,用于发现问题代码模式,并可自动修复其中不少问题。
开箱即用的 JavaScript/TypeScript 代码检查工具,基于 ESLint 封装,内置严格且统一的默认风格。