ESLint中规则匹配器及类CSS选择器逻辑的源码实现位置在哪?
你找错了查询路径,rule-tester.js是ESLint用于规则单元测试的工具模块,本身不包含选择器和钩子分发的核心逻辑,对应实现分别在两个核心模块:
- 选择器匹配核心逻辑
通配符*、:function这类伪类、类CSS的嵌套/属性选择器的解析、校验、节点匹配逻辑,全部在lib/linter/selectors.js模块中实现,ESLint内部还封装了对AST节点类型的预设分类,比如:function就是所有函数类型节点的统一别名,包含普通函数声明、函数表达式、箭头函数等多个AST节点类型。 - 钩子分发逻辑
你提到的:exit后缀的处理逻辑在lib/linter/linter.js的AST遍历绑定部分:- 所有规则配置的监听器键会先被统一预处理,拆分出是否带
:exit后缀,带后缀的监听器会被绑定到AST遍历的节点退出阶段触发,不带后缀的会绑定到节点进入阶段触发。 - 通配符
*对应的监听器会在所有节点的对应阶段(进入/退出)都被触发,不需要匹配特定节点类型。
- 所有规则配置的监听器键会先被统一预处理,拆分出是否带
你贴的那段代码是规则层面的监听器写法,属于业务规则的实现代码,不是ESLint核心框架的内置逻辑,所以你在核心库源码里搜不到完全一样的实现。
内容的提问来源于stack exchange,提问作者Lance Pollard
相关产品推荐
相关产品推荐

