ESLint 规则分析器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/eslint-rule-analyzer 到我的 AI 助手中。
技能介绍
要解决什么问题
一个跑了多年的 ESLint 项目,eslint.config.js 往往会膨胀到没人能完整说清它的程度:从多个插件继承来的 legacy 配置块、被新规则取代却没人删的旧规则、因为 overrides 嵌套而互相打架的优先级设置。这些都不是“功能坏了”,而是规则集在静默腐化——max-len 在某个子目录被关掉,no-unused-vars 被换成了 @typescript-eslint/no-unused-vars,而全局 base 配置里还留着早已不合时宜的 argsIgnorePattern。单独看每一行似乎都“合理”,靠人眼逐条对比找出冲突成本很高。
这个技能针对的就是这类静默退化。
它的工作原理
核心能力
技能调用 ESLint 的 Node.js API(new ESLint().calculateConfigForFile)配合 flat config 体系,直接算出某个文件“最终生效的完整规则集”,而不是对配置文件文本做正则匹配。这意味着它能拿到经过继承、覆盖、overrides 合并之后的真实结果。
在此基础上做三类分析:
- 规则冲突检测:定位同一条规则在不同配置块中取值不一致,或 legacy 配置与 flat config 同时存在的问题。
- 未使用规则识别:找出存在于配置里、但对当前文件集永远不会命中的规则。
- 规则推荐生成:从
eslint-plugin-unicorn和typescript-eslint中挑选与项目实际技术栈匹配的规则,给出项目级建议。
关键步骤
- 确定目标文件或目录,让 ESLint 计算出该路径的生效配置。
- 将计算出的配置与文件中实际出现的规则逐条对齐,标记冲突项与冗余项。
- 结合项目中检测到的 TypeScript / 现代语法使用情况过滤推荐规则,避免给出装了也用不上的插件规则。
适用边界与注意点
- 它是一个分析器,不是自动修复器。问题被发现后,修改配置仍需人工确认,尤其是涉及覆盖优先级的调整。
- unicorn 与 typescript-eslint 的默认推荐偏向较激进的风格。项目如果已有强约束的团队规范(例如自定义的
@company/eslint-config),应把它当作候选清单,而不是默认答案。 - 上游要求 Node.js 版本为
^20.19.0、^22.13.0或更高,使用官方发行版即可(SSL 已内置)。上游文档还提到可能需要ca.pem/cert.pem,若环境出现 SSL 相关报错,优先核对这一点。 - 如果使用了 ESLint 的 TypeScript 类型定义,需要 TypeScript 5.3 或更高版本。
- 对于 monorepo 或存在多套 flat config 的仓库,需要按工作区分别运行分析,跨包的冲突不会自动合并展示。
使用场景
- 代码评审前,需要确认改动文件的生效规则集,定位与其他目录的配置冲突。
- 迁移到 flat config 时,需要识别 legacy 配置里仍然在用的规则,决定是否保留。
- 合并多个插件的配置块后,需要找出互相覆盖同一条规则且取值不同的项。
- 为 TypeScript 项目做技术栈对齐,需要生成 unicorn 与 typescript-eslint 的可采纳规则建议。
适合人员
- 维护大型前端仓库的工程师,需要定期清理膨胀的 ESLint 配置。
- 接手遗留项目的技术负责人,要在改动前弄清规则覆盖关系。
- 搭建 monorepo 的架构师,需要保证多个包之间的 lint 规则一致。
- 正在从 .eslintrc 迁移到 flat config 的开发者,需要排查重复定义。