Eslint glob(**)未递归考虑所有目录

35

我正在使用OSX,在我的package.json文件中,我有如下脚本:

"lint": "eslint ./src/**/*.js"

然而,当我运行npm lint时,只有第一级目录被用于linting,例如:./src/dir/*而不是./src/dir/nested_dir/*

我原以为**通配符表示递归搜索?

有谁知道我如何使它按预期运行吗?

4个回答

77

问题很可能是在全局路径周围缺少引号。

将此更改为(不起作用):"lint": "eslint ./src/**/*.js"

更改为(有效):"lint": "eslint './src/**/*.js'"

ESLint文档说

请注意,当传递参数时,通配符会被您的shell扩展。扩展的结果可能因您的shell及其配置而异。如果要使用node glob语法,则必须引用参数(如果需要在Windows中运行,请使用双引号)

一些谷歌搜索在GitHub上找到了这个线程


6
这在 macOS 上运行良好,但当我在 Windows 上尝试时失败了。 这在 macOS 和 Windows 上都似乎没问题。"lint": "eslint \"./src/**/*.js\"" - Mike Suiter
1
对我不起作用。在Linux上只能深入一层。 - chovy
1
对我来说可以在Windows和Linux上运行。 - Rustem Zinnatullin
就是这样!我的 GitLab 代码检查报错了,但本地却没问题(忽略一个文件),加上单引号后就一致了。 - Andre Miras

21

改用以下方法:

"lint": "eslint src --ext .js"

或者对于多个扩展名:

"lint": "eslint src --ext .js,.jsx,.ts,.tsx"

请在eslint文档中查看更多信息。


1
第二个完成了! - Tamil Vendhan Kanagarasu

0

当使用 vue-cli-service 进行代码检查时,也会出现这种情况,因此您需要在引用它时加上引号:

"lint": "vue-cli-service lint './src/main/app/**/*.ts' './src/main/app/**/*.vue'"

0

这个命令在 monorepos 中递归地工作(第一个 glob 是针对 packages 中的所有子文件夹,第二个 glob 是针对 src 中的任何子文件夹)。如果没有第二个 glob,该命令将无法正常工作。

"lint": "eslint 'packages/**/src/**' --ext .ts,.tsx"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接