ESLint 学习笔记 - 配置

配置文件

有四种方式来添加配置信息:

  • 在源代码中添加配置信息的注释
  • 在命令行中通过参数来添加配置信息
  • 在 package.json 文件中的 eslintConfig 字段添加配置信息
  • 创建单独的配置文件(推荐)

配置文件的格式:

  • JavaScript - 使用 .eslintrc.js 然后输出一个配置对象
  • YAML - 使用 .eslintrc.yaml 或 .eslintrc.yml 去定义配置的结构
  • JSON - 使用 .eslintrc.json 去定义配置的结构,ESLint 的 JSON 文件允许 JavaScript 风格的注释
  • (弃用) - 使用 .eslintrc,可以使 JSON 也可以是 YAML
  • package.json - 在 package.json 里创建一个 eslintConfig 属性,在那里定义你的配置

配置文件的查找顺序:

当使用配置文件或 package.json 配置 ESLint 的时候,会一层层地叠加使用配置文件。ESLint 将自动在待检测的代码所在的目录里寻找它们,紧接着是父级目录,一直到文件系统的根目录(除非指定 root: true)。ESLint 会将找到的所有配置文件的配置信息合并使用。推荐在项目根目录中的配置文件中设置 "root": true,表明找到该配置文件之后,就不要再继续向上级目录查找配置文件了。通过这种方式,你可以有项目级 ESLint 设置,也有覆盖特定目录的 ESLint 设置。

层叠使用配置文件的例子

忽略文件

当 ESLint 作用于一个目录时,支持使用 .eslintignore 文件来列出一些不需要被 ESLint 检测的文件。.eslintignore 文件是个纯文本文件,可以放在待检测目录的任何父级目录,它将影响到 .eslintignore 文件所在的目录和所有子目录。

与配置文件不同,.eslintignore 文件不会被叠加查找,ESLint 在找到一个 .eslintignore 文件时候就会停止查找上级目录,因此推荐在项目根目录中创建 .eslintignore 文件。

ESLint 会自动忽略 .eslintignore 文件所在目录中的 node_modules 目录和 bower_components 里面的所有代码的检测。把下面 .eslintignore 文件放到项目根目录里,将忽略项目根目录下的 node_modules,bower_components 以及 build/ 目录下除了 build/index.js 的所有文件。

其实不管是否创建 .eslintignore 文件,都会忽略执行 eslint 命令所在目录的 node_modules 目录和 bower_components 里面的所有代码的检测。

# 忽略 build 目录下的除了 index.js 之外的所有文件的代码检测
build/*
!build/index.js

parser

指定 js 语法解析器,默认使用 espree 解析器。下面的配置指定了 esprima 作为解析器:

{
    "parser": "esprima"
}

parserOptions

指定 js 语法解析选项

{
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",
        "ecmaFeatures": {
            "jsx": true
        }
    }
}

ecmaVersion

指定待检测的代码中语法所使用的 ECMAScript 版本。

  • "ecmaVersion": 5 默认值,使用 ECMAScript 5
  • "ecmaVersion": 6 使用 ECMAScript 6
  • "ecmaVersion": 2017 使用 ECMAScript 2017
  • "ecmaVersion": "latest" 使用 ECMAScript 最新版本

通过设置 "ecmaVersion": 6 只是告诉 ESLint 待检测的代码中使用了 ES6 的语法,并没有告诉 ESLint 待检测的代码中使用了 ES6 的 API(例如 Set Map Promise 等 ES6 新添加的全局对象以及全局对象的属性、实例对象的原型属性)。通过 "env": { "es6": true } 选项可以告诉 ESLint 代码中使用了 ES6 的 API。

设置 "env": { "es6": true },会自动开启 "ecmaVersion": 6,但是设置 "ecmaVersion": 6 不会自动开启 "env": { "es6": true }

sourceType

指定待检测的代码是如何使用的,是作为

你可能感兴趣的:(ESLint 学习笔记 - 配置)