ESLint 自定义规则架构
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的指南,将 @user_3c6cb52e/eslint-rule-architect-2 安装到你的 AI 助手中。
技能介绍
它解决的是什么问题
当团队内部的编码规范超出 ESLint 官方规则的覆盖范围时,最后往往只剩两条路:要么在评审意见里反复手写同样的修改建议,要么维护一份只有一两个人看得懂的临时脚本。前者是纯体力劳动,后者通常缺少类型约束、测试和文档,一旦换人接手就变成黑盒。
这个技能面向的正是这一类场景:需要把团队约定沉淀成可执行、可测试、可分发的自定义规则,而不是一堆散落在 Wiki 里的文字说明。
核心能力
- 基于 ESLint RuleTester API 生成规则骨架,让每条规则从一开始就带着可复现的用例
- 借助
@typescript-eslint/utils组织规则代码,避免手写 AST 遍历时的重复样板 - 产出 AST visitor 模式的访问器代码,直接对目标节点做出判断与上报
- 通过
parserServices打通 TypeScript 的类型信息,在类型层面做判断而非只做文本匹配 - 支持生成可共享的配置包,让规则在多个仓库之间复用
它是怎么工作的
技能把规则开发拆成几个可验证的步骤:
- 明确规则要拦截的具体写法,并用一句话描述"合法"与"非法"的边界
- 生成 rule 主体与对应的 visitor 访问器,确定监听哪些节点、在什么时机触发
- 利用
parserServices获取类型信息,用类型条件替代脆弱的字符串比对 - 用 RuleTester 补齐正反用例,确保规则不会误伤合法代码
- 将规则封装成可分发的配置,供其他项目直接引用
适用边界
- 需要 Node.js
^20.19.0、^22.13.0或>=24,且构建时启用了 SSL 支持 - 依赖项解析要求
node-linker=hoisted - 如果使用 ESLint 的 TypeScript 类型定义,需要 TypeScript 5.3 及以上
- 它解决的是规则怎么写的问题,不负责替代代码格式化工具,也不负责扫描结果的自动修复策略决策
使用场景
- 团队代码规范要求禁止隐式全局变量,需要将其编写为带测试用例的 ESLint 自定义规则并下发到各仓库时。
- 项目使用 TypeScript 编写,需要在 AST 遍历时根据变量的具体类型做出精准判断,而不仅是字符串匹配时。
- 基础库团队希望将内部校验逻辑封装成可共享的 ESLint 配置包,供公司内其他业务线项目直接引用时。
- 接手老旧代码规范脚本,需要将其重构为基于 RuleTester 且具备完整 TypeScript 类型推导支持的现代化规则时。
适合人员
- 前端架构师,负责制定团队代码规范,需要将复杂的 TypeScript 类型约束转化为可自动执行的 ESLint 规则。
- 基础库维护者,需要将内部工具函数的参数校验逻辑封装成标准化的配置包,供公司内多个业务线项目复用。
- 新晋 Node.js 开发者,正在学习如何通过 AST 访问器和 RuleTester 编写带有完整测试覆盖的自定义 lint 规则。