阅读本文,您将收获
- 如何直接调试eslint node_modules源码
- 文件遍历以及文件配置生成过程
- 如何将代码转换成ast
- 如何利用ast和rules生成错误信息
- 如何利用ast和rules进行代码修复
首先,我们需要了解几个重要的点:
- ESLint/FlatESLint入口对应的类, 下图是它的调用方式路径:* node_modules\eslint\lib\eslint\eslint.js* node_modules\eslint\lib\eslint\flat-eslint.js<img src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0513fda628c74f7c8626ae1cc4bdc98c~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?)* CLIEngine 该类是 Eslint 的大脑,控制 Eslint 的执行流程,调用 api 时一般只需要操作 CLIEngine 即可路径: node_modules\eslint\lib\cli-engine\cli-engine.js*
FileEnumerator
遍历每个文件,并为文件绑定config路径: node_modules\eslint\lib\cli-engine\file-enumerator.js* Linter 该类是 Eslint 的执行总裁,配置文件加载、校验、修复都是该类来控制完成的路径: node_modules\eslint\lib\linter\linter.js*