跳到主要内容

ESlint

整理 掘金 ESLint 核心原理剖析

ESlint 基本原理

通过编译器(Espree Eslint 团队写的)将源码编译成 AST 之后为了方便读取 AST 的数据,又对 AST 进行了一次封装处理。其中主要就是创建 token 索引关联位置 Map,这样后续可以通过该 Map 快捷找到对应的 token,其次就是提供各种 API 方法读取 AST 的节点信息。

再通过规则插件定义要检查的格式内容或者逻辑错误或者要修复的内容,然后将 AST 对象的节点进行平铺,组成一个一维的 AST 节点数组,再遍历 AST 节点数组找到对应节点,然后通过对应节点上的位置信息,根据 token 索引关联位置 Map 就可以知道具体的节点的 token 下标,然后就可以拿到具体的字符 token 信息,在具体字符 token 中记录了该字符的位置信息。

那么就可以知道什么位置的什么字符有什么问题;同样也知道了要修复的位置和要修复的内容,再去到具体的源码中进行替换,再把替换之后的内容输出覆盖原来的文件内容即可。

配置

  • extends 选项就是继承其他配置文件,通过 extends 选项我们可以使用自身的配置(eslint: 开头)或者插件中的配置(plugin: 开头)或者是第三方模块中的配置。最终 ESLint 会通过递归处理 extends,合并成一个配置对象。

  • parser 指定解析器

创建可共享插件和配置

掘金 ESLint 技术原理与实战及代码规范自动化详解