create-react-app执行npx eslint src报无匹配文件错误
执行 npx eslint src 或 npx eslint src/ 报「No files matching the pattern "src" were found」错误,核心原因是ESLint 默认仅识别 .js、.jsx 后缀的脚本文件。传入目录路径时,ESLint 会自动遍历目录下符合默认后缀规则的文件,你的项目是TypeScript技术栈,源码以 .ts、.tsx 为后缀,ESLint遍历src目录时找不到符合默认后缀的文件,就会抛出匹配不到文件的错误。
网上多数教程演示npx eslint src能直接运行,是因为演示项目都是纯JS技术栈,文件后缀刚好匹配ESLint默认规则,TS项目必须显式声明要识别的后缀类型。
执行 npx eslint src/* 能正常运行,是因为这条命令里的通配符 * 是由当前终端Shell先展开成所有具体文件路径再传给ESLint,ESLint直接拿到了明确的文件路径,不需要自己做后缀匹配,所以不会报错。但这种写法无法递归扫描src下嵌套子目录里的文件,不是规范解法。
- 临时执行校验:命令行追加
--ext参数,明确告诉ESLint需要扫描哪些后缀的文件
参数里的后缀列表可以根据项目实际用到的脚本类型调整。npx eslint src --ext .ts,.tsx,.js,.jsx - 长期使用(推荐):在项目
package.json的scripts字段中添加固定的lint脚本,把后缀参数写死,避免每次执行命令都手动输入长参数
后续需要校验代码时,直接执行{ "scripts": { // 项目原有其他脚本... "lint": "eslint src --ext .ts,.tsx,.js,.jsx" } }npm run lint即可。
你当前的ESLint配置还有一处逻辑缺失:已经安装了@typescript-eslint/eslint-plugin插件,但没有在extends中引入TS官方推荐规则集,插件不会实际生效。将配置中的extends字段修改为如下内容即可:
extends: [ "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "standard" ],
另外注意,手动初始化ESLint配置后,记得把package.json中create-react-app默认生成的eslintConfig配置块删除,避免多份配置冲突导致规则不生效。
内容的提问来源于stack exchange,提问作者JimmyTheCode

