如何让ESLint规则覆盖.eslintrc.json所在目录的上级及同级目录?
解决AWS Lambda依赖层ESLint规则无法覆盖src目录的问题
问题背景
项目采用AWS Lambda依赖层结构,ESLint配置文件.eslintrc.json放在dependencies/nodejs目录下,仅该目录内的文件能应用规则,同级的src目录下的JS文件无法触发ESLint检查,且不想在根目录重复创建package.json。
解决方案
方案1:根目录创建极简ESLint配置,继承依赖层规则
在项目根目录新建.eslintrc.json,内容仅需指向依赖层的配置文件,无需重复安装ESLint或依赖:
{ "extends": ["./dependencies/nodejs/.eslintrc.json"] }
之后执行ESLint时,会自动从根目录读取配置,覆盖src和dependencies/nodejs所有文件。如果需要统一脚本,可在dependencies/nodejs/package.json中添加:
"scripts": { "lint": "eslint ../../src ." }
运行npm run lint即可同时检查所有目标文件。
方案2:执行ESLint时指定配置文件路径
无需修改任何配置文件,直接在执行命令中指定依赖层的ESLint配置:
eslint src/ --config dependencies/nodejs/.eslintrc.json
同样可以把命令封装到dependencies/nodejs/package.json的脚本里:
"scripts": { "lint": "eslint ../../src --config ./.eslintrc.json" }
原理说明
ESLint默认会从当前被检查文件的目录开始,向上查找最近的ESLint配置文件。由于src和dependencies/nodejs是同级子目录,src下的文件无法找到nodejs内的配置。通过上述两种方式,要么让根目录的配置继承目标规则,要么强制指定配置文件路径,就能实现规则覆盖所有需要检查的目录。
内容的提问来源于stack exchange,提问作者Hussein Mohamed
相关产品推荐
相关产品推荐

