九、ESLint中用glob模式指定要检测的文件

先来看看官网文档

匹配规则

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

1
2
3
4
5
6
7
8
9
10
11
12
13
project-root
├── app
│ ├── lib
│ │ ├── foo.js
│ │ ├── fooSpec.js
│ ├── components
│ │ ├── bar.js
│ │ ├── barSpec.js
│ ├── .eslintrc.json
├── server
│ ├── server.js
│ ├── serverSpec.js
├── .eslintrc.json

app/.eslintrc.json 文件中的配置定义了 **/*Spec.js glob 模式。该模式相对于 app/.eslintrc.json 的基准目录。因此,该模式匹配 app/lib/fooSpec.jsapp/components/barSpec.js,但 不匹配 server/serverSpec.js。如果你在项目根目录的 .eslintrc.json 文件中定义相同的模式,它将匹配所有三个 *Spec 文件。

测试案例

点击查看大图

在配置中使用 overrides 键进行glob的配置。

上图中'*.test.js'匹配到的文件有:

1
2
- app\components\button.test.js
- app\lib\util.test.js

'test/**/*.js'匹配到的文件有:

1
2
- test\index.js
- test\util\util.js

excludedFiles键表示哪些匹配中的文件例外,'test/*/*.js'匹配到的文件是test\util\util.js,所以最终启用单引号规则的文件只有三个:

1
2
3
- app\components\button.test.js
- app\lib\util.test.js
- test\index.js