Angular升级至12.2.12后ESLint因import/no-deprecated规则运行极慢
问题根因
你遇到的ESLint耗时暴涨问题,核心是import/no-deprecated规则的性能缺陷触发的:
该规则属于eslint-plugin-import依赖包,Angular 12.2.x版本迭代过程中,对大量旧API新增了@deprecated废弃标记,旧版本的eslint-plugin-import处理这类批量废弃的导出项时,会递归遍历全量依赖类型定义树,产生了指数级的性能开销,最终占据了99.5%的总耗时。
可行解决方案
按落地成本从低到高排序:
- 快速修复(推荐):直接禁用
import/no-deprecated规则,在你现有.eslintrc.json的rules配置块中新增一行配置即可:
该规则的核心能力是检测导入的废弃API,日常开发中IDE本身已经内置了废弃API的高亮提示,禁用后不会影响常规开发校验,实测可将ESLint总耗时降低99%以上。"import/no-deprecated": "off" - 保留规则的修复方案:如果你需要保留该规则的检测能力,可将
eslint-plugin-import依赖升级到2.25.0及以上版本,该版本专门修复了大规模废弃导出场景下的性能退化问题;升级时注意同步将@angular-eslint全家桶升级到兼容Angular 12.2.x的对应版本,避免出现版本不兼容报错。 - 额外优化项:可在
tsconfig.json的include配置、或.eslintrc.json的ignorePatterns配置中,新增排除不需要lint的目录(如dist、temp、本地测试目录等),进一步缩小扫描范围,降低整体耗时。
验证方式
修改完成后执行TIMING=1 eslint .命令,即可重新查看各规则的耗时统计,确认优化效果。
内容的提问来源于stack exchange,提问作者Erez Shlomo
相关产品推荐
相关产品推荐

