ESLint中.eslintrc.js的parserOptions.project配置作用及与parser的区别
ESLint中parserOptions.project的作用及配置分离的解释
一、parserOptions.project到底有啥用?
- 你用的
@typescript-eslint/parser是专门解析TypeScript代码的工具,这个project选项就是告诉它:“去读这个tsconfig.json文件”。 - 有了这个配置,ESLint就能获取到你项目里TypeScript的编译规则(比如代码要转成哪个JS版本、哪些文件要编译、哪些要排除),最重要的是——能启用那些需要类型信息的ESLint规则。比如
no-unused-vars如果开了类型感知,就能准确区分真正没用到的变量和被类型引用的变量;还有像await-thenable这种规则,得知道某个值是不是Promise类型才能检查你有没有瞎await。没这个配置,这些规则要么用不了,要么查不准。 - 另外它还能帮ESLint圈定检查范围,只处理tsconfig里指定的源码文件,不会乱查node_modules或者其他无关文件。
二、为啥parser和parserOptions.project要分开配置?
- 各司其职:
parser是选“用哪个工具解析代码”(这里选的是TS专用的解析器),而parserOptions是给这个工具传“怎么解析的参数”——project只是其中一个参数而已,还有sourceType(指定是模块还是脚本)、tsconfigRootDir(指定tsconfig的根目录)这些。分开配置就是把“选工具”和“调工具参数”的事拆开,逻辑更清楚。 - 灵活适配:要是哪天你换个解析器(比如用babel-eslint处理JS),根本不需要
project这个参数,分开配置的话直接换parser就行,不用动别的结构。 - ESLint本身的设计规范:ESLint的配置架构就是这么定的,顶层parser选解析器,parserOptions放该解析器的专属配置,保持所有项目的配置结构一致,大家用起来都顺手。
内容的提问来源于stack exchange,提问作者Hanami
相关产品推荐
相关产品推荐

