[关闭]
@Dale-Lin 2022-09-12T15:11:19.000000Z 字数 2706 阅读 337

ESLint 使用

ESLint


使用

环境 Node.js >=16.0.0 需要 SSL 支持,在 repository 下运行:

  1. npm init @eslint/config

用 ESLint 检查某个文件:

  1. # 有 eslint 问题会抛出错误
  2. pn eslint yourfile.js
  3. # 尝试自动修复
  4. pn eslint yourfile.js --fix

配置

npm init @eslint/config 会在项目目录下生成 .eslintrc.js 文件,例如:

  1. module.exports = {
  2. "extends": [
  3. "eslint:recommended"
  4. ],
  5. "rules": {
  6. "semi": 2,
  7. "quotes": 2,
  8. }
  9. }

extends 的 devDep 包命名为 eslint-config-yourConfig 的时候,可以用 "yourConfig"

env

env 提供了预设的全局变量:

globals 配置可以自定义全局变量:

  1. {
  2. "env": {
  3. "es6": true,
  4. "browser": true
  5. },
  6. "globals": {
  7. "Promise": "off", // off-禁用
  8. "var1": "writable", // 可用
  9. "var2": "readonly" // 只读
  10. }
  11. }

react 建议使用 eslint-plugin-react 插件。

规则

规则ID

配置文件

  1. // .eslintrc.js
  2. {
  3. "rules": {
  4. "eqeqeq": "off",
  5. "curly": "error",
  6. "quotes": ["error", "double"]
  7. }
  8. }

使用 "plugin/rule" 来使用一个插件的规则:

  1. {
  2. "plugins": [
  3. "plugin1"
  4. ],
  5. "rules": {
  6. "eqeqeq": "off",
  7. "curly": "error",
  8. "quotes": ["error", "double"],
  9. "plugin1/rule1": "error"
  10. }
  11. }

使用 "overrides" 配置来覆盖另一个文件的规则:

  1. {
  2. "rules": {...},
  3. "overrides": [
  4. {
  5. "files": ["*-test.js", "*.spec.js"],
  6. "rules": {
  7. "no-unused-expressions": "off"
  8. }
  9. }
  10. ]
  11. }

禁止使用注释禁用:

  1. {
  2. "rules": {...},
  3. "noInlineConfig": true
  4. }

提示无用的注释禁用规则:

  1. {
  2. "rules": {...},
  3. "reportUnusedDisableDirectives": true
  4. }

插件

parser

ESLint 默认使用 Espree 作为 parser,可以通过 "parser" 字段指定自定义 parser:

  1. {
  2. "parser": "@typescript-eslint/parser",
  3. "rules": {
  4. "semi": "error"
  5. }
  6. }

能用的 ESLint parser:

processor

插件可能提供了 processor,Processor 可以从其他类型的文件里提取 js 给 ESLint 检查,或者预处理 js 代码。

使用 "processor" 字段配置,通常格式是 "{plugin}/{processor}"

  1. {
  2. "plugins": ["a-plugin"],
  3. "processor": "a-plugin/a-processor"
  4. }

"overrides" 字段里可以指定 processor 处理的文件类型:

  1. {
  2. "plugins": ["a-plugin"],
  3. "overrides": [
  4. {
  5. "files": ["*.md"],
  6. // "files": ["**/*.md/*.js"]
  7. // 只检查 md 文件里的 js 代码块
  8. "processor": "a-plugin/markdown"
  9. }
  10. ]
  11. }

插件配置

插件是第三方的,通常使用 npm 安装。使用 "plugins" 字段配置, "eslint-plugin-" 前缀可以省略:

  1. {
  2. "plugins": [
  3. "plugin1", // eslint-plugin-plugin1
  4. "eslint-plugin-plugin2",
  5. "@jquery/jquery", // @jquery/eslint-plugin-jquery
  6. "@foobar" // @foobar/eslint-plugin
  7. ]
  8. }

注意:

  1. plugins 通过相对路径/node_modules 引用,即使用 require('eslint-plugin-pluginname') 获取;
  2. 通过 "extends" 加载的 plugins 也会从 node_modules 目录下查找

使用插件定义的配置

使用插件定义的配置(rules, env)时遵循以下 convention(约定):

  1. {
  2. // ...
  3. "plugins": [
  4. "jquery", // eslint-plugin-jquery
  5. "@foo/foo", // @foo/eslint-plugin-foo
  6. "@bar" // @bar/eslint-plugin
  7. ],
  8. "extends": [
  9. "plugin:@foo/foo/recommended",
  10. "plugin:@bar/recommended"
  11. ],
  12. "rules": {
  13. "jquery/a-rule": "error",
  14. "@foo/foo/some-rule": "error",
  15. "@bar/another-rule": "error"
  16. },
  17. "env": {
  18. "jquery/jquery": true,
  19. "@foo/foo/env-foo": true,
  20. "@bar/env-bar": true,
  21. }
  22. // ...
  23. }

忽略文件

使用 "ignorePatterns" 字段设置 ESLint 忽略的文件:

  1. {
  2. "ignorePatterns": ["templ.js", "**/vendor/*.js"],
  3. "rules": {
  4. // ...
  5. }
  6. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注