乐趣区

ESLint中如何用glob模式指定要检测的文件

project-root
├── app
│   ├── lib
│   │   ├── foo.js
│   │   ├── fooSpec.js
│   ├── components
│   │   ├── bar.js
│   │   ├── barSpec.js
│   ├── .eslintrc.json
├── server
│   ├── server.js
│   ├── serverSpec.js
├── .eslintrc.json

现在有一个项目有如上目录结构,其中 foo.js、bar.js、server.js 中字符串采用双引号规则,fooSpec.js、barSpec.js、serverSpec.js中字符串采用单引号规则,那我们就需要对不同的文件使用不同的检查规则。我们进行如下配置:

module.exports = {
  "env": {
    "browser": true,
    "es6": true,
    "node": true
  },
  "extends": "eslint:recommended",
  "globals": {
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
  },
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module"
  },
  "rules": {"quotes": ["error", "double"]
  },
  "overrides": [
    {"files": ["./app/**/*Spec.js"], // 匹配 app 目录的子目录下所有命名以 Spec 结尾的 js 文件
      "excludedFiles": "./server/*.js", // 排除 server 目录下所有的 js 文件
      "rules": {"quotes": ["error", "single"] // 指定匹配文件规则
      }
    }
  ]
};

上面配置结果:foo.js、bar.js、server.js、serverSpec.js将采用双引号股则检查,fooSpec.js、barSpec.js将采用单引号规则检查。而 serverSpec.js 中字符串本身采用的是单引号,那么检查代码时将会报错。

如需修正错误,更改相关配置即可。

退出移动版