You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 13中lint-staged提交全量lint耗时久,如何仅检查暂存文件?

这个问题我之前在Angular项目里也碰到过!核心原因就是你现在的lint-staged配置直接调用了全量检查的npm run lint:fix,而没有让ESLint只处理暂存的文件。咱们一步步调整就能解决卡顿问题:

解决步骤

1. 调整lint-staged配置,直接调用ESLint处理暂存文件

打开你的package.json,找到lint-staged字段,把原来调用npm run lint:fix的配置替换成直接调用ESLint命令,让lint-staged自动把暂存的文件列表传给它。同时保留prettier的格式化操作:

"lint-staged": {
  "*.{ts,html}": [
    "eslint --fix",
    "prettier --write"
  ]
}

为什么这么改?因为你之前配置的npm run lint:fix应该是全量检查命令(比如ng lint --fix),它会遍历整个应用和所有库的文件。而直接用eslint --fix的话,lint-staged会精准传递暂存文件的路径,让ESLint只处理这些变更的文件,速度会大幅提升。

2. 确保husky钩子正确调用lint-staged

检查你的.husky/pre-commit钩子文件,确保它是调用npx lint-staged,而不是直接执行全量的lint命令。正确的钩子内容应该是:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

3. 多库项目的进阶优化(可选)

如果你的各个Angular库有独立的ESLint配置文件(比如.eslintrc.lib1.json、.eslintrc.lib2.json),可以给不同路径的文件指定对应的配置,确保lint规则准确适配每个库:

"lint-staged": {
  "projects/app/src/**/*.{ts,html}": [
    "eslint --fix --config .eslintrc.app.json"
  ],
  "projects/lib1/src/**/*.{ts,html}": [
    "eslint --fix --config .eslintrc.lib1.json"
  ],
  "projects/lib2/src/**/*.{ts,html}": [
    "eslint --fix --config .eslintrc.lib2.json"
  ],
  "*.{ts,html}": [
    "prettier --write"
  ]
}

4. 验证效果

修改几个文件并用git add暂存,然后手动执行npx lint-staged,你会看到它只处理你暂存的文件,而不是遍历整个项目。之后再提交代码,就不会出现长时间卡顿的情况了。

内容的提问来源于stack exchange,提问作者afriedman111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:05:23