Eslint配置选项简单总结

449 阅读4分钟

写在最前:本文是通过ESlint官网的配置文档得来,有大部分内容都是官网摘抄,此文章只是本人总结使用,如果理解错误望指出,以免误人子弟。

#Eslint 可以做什么

  • 静态分析,代码检查
  • 可以创建检验规则,规范代码格式
  • 所有的都是可拔插的
  1. 内置规则和自定义规则共用一套规则API
  2. 内置格式化方法和自定义的格式化方法共用一套格式化API
  3. 额外的规则和格式化方法能在运行时制定
  4. 规则和对应的格式化方法并不强制捆绑使用

可配置的内容与配置项

  1. 制定脚本的运行环境,每种环境都有一组特定的预定义全局变量
  2. 脚本在执行期间访问的额外的全局变量
  3. 启用的规则和各自的错误级别

配置项:

parserOptions

  • ecmaVersion配置使用的ECMA语法版本
  • sourceType 设置为script或者module 也就是js脚本模式和模块
  • jsx 启用JSX模式

parser

eslint默认使用Espree解析器,可以配置不同的解析器,解析器应该符合要求:

  1. 必须是一个Node模块,可以冲它出现的配置文件中加载,是指他是一个npm安装包。
  2. 符合解析器接口parser Interface eslint包含三个默认解析器:
  • esprima
  • babel-eslint 对babel解析器的包装,使其能够与eslint兼容
  • @typescript-eslint/parser 将TS转换成与estree兼容的形式,一边在eslint中使用 **在使用自定义解析器时,为了parserOptions是必须配置的。解析器会被传入parserOptions,但是不一定会使用他们来决定功能特性的开关。

plugins

插件的作用:插件可以提供处理器,处理器可以从另外一种文件中提取JS代码,然后让ESlint检测JS代码,或者处理器可以在与处理中减缓JS代码。
一个插件中可能会具有多个处理器,通常可能只用到其中一种,如果只用到其中一种,可以使用processor键,或者我们想指定的某个文件或某种文件,那么就应该使用overrides属性:

{
plugin: ['a-plugin'],
processor: 'a-plugin/a-processor'
}

{
    "plugins": ["a-plugin"],
    "overrides": [
        {
            "files": ["*.md"],
            "processor": "a-plugin/markdown"
        }
    ]
}

也支持一些第三方插件,在使用第三方插件需要使用npm进行安装。插件可以省略插件的前缀名'eslint-plugin-'

plugins: [
'plugin1'等同于'eslint-plugin-plugin1'
]

env 指定执行环境

执行环境代表了一组预定义的全局变量,比如borwser中包含window或者document对象,比如node就包含process和module对象,比如测试环境的jest的全局变量,jquery的全局变量等等,都是通过指定环境从而在编码文件中可以使用某些全局的变量。
可以同时指定多个执行环境,比如可以同时指定浏览器环境和node环境。

{
    env: {
        browser: true,
        node:true
    }
}

也可以指定某个插件中使用使用某种环境,那么就可以这样配置:

{
    plugin: ['a-plugin'],
    env: {
        example/node: true
    }
}

globals 设置全局变量

当JS代码中需要使用一些非本文件声明的全局变量时,就可以使用globals属性,同时可以设置变量的级别,是否可写writable和只读readonly

{
    globals:{
        var1: 'writable',
        var2: 'readonly'
    }
}

rules

语法规则,也就是用来规范代码的比如可以使用只使用单引号的规则方式。

{
    rules: {
        quotes:[1,'double']//当双引号出现的时候,使用warn
    }
    0为关闭1为警告2为错误
}

当想要对某一文件添加特殊规则或者应用另一套规则时,就可以使用overrides,

overrides: {
    files: ['path'],
    rules: {
        'quotes': [2, double]
    }
}

eslint 支持的文件类型:

  • .eslintrc.js
  • .eslintrc.yaml
  • .eslintrc.yml
  • .eslintrc.json
  • .eslintrc
  • package.json

优先级从上到下,eslint只会使用一个,同时eslint文件应用具有就近原则,在同一层级存在配置时,就会使用当前层级和上层eslint配置文件的组合使用,并且近的文件属性优先。这样,如果每层都有eslint配置文件的话,那么这一层的配置就相当于是父级配置文件与当前的组合,利用这个特性,如果我们想要所有的代码都能使用这个属性,那么,1将它配置到项目的最顶层的配置文件中即可。通常他会一直向上找父级的配置文件,直到找到文件根目录的配置文件。我们并不能允许一直向上查找,就可以使用root:true属性,当检查到配置文件的这个属性时,就不会再向上查找了。

extend 继承

通常我们使用插件,插件本身也会输出一个火多个配置,所以我们就可以直接继承插件的配置。

{
plugins: ['react'],
extend: [
'plugin:react/recommended'
]
}

我们的项目中继承了一些vue的eslint的配置,这些配置都来自于我们安装的插件。

eslintignore

配置eslint需要忽略的文件。