# Eslint配置

# 配置方式

  1. 代码中加注释
  2. 使用配置文件.eslintrc.js或者.eslintrc.yaml或者.eslintrc.yml或者.eslintrc.json或者.eslintrc
  3. 配置在package.json的eslintConfig的属性里

# 属性

  1. parserOptions
    • ecmaVersion - 指定你想要使用的 ECMAScript 版本。值为:3,5,6,7,8,9,10
    • sourceType - 代码风格。值为script(默认),module
    • ecmaFeatures
      • globalReturn - 允许在全局作用域下使用 return 语句
      • impliedStrict - 启用全局 strict mode
  2. env
    • es6 - 启用除了 modules 以外的所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6)。
    • browser - 浏览器环境中的全局变量。
    • node - Node.js 全局变量和 Node.js 作用域。
    • commonjs - CommonJS 全局变量和 CommonJS 作用域 (用于 Browserify/WebPack 打包的只在浏览器中运行的代码)。
    • shared-node-browser - Node.js 和 Browser 通用全局变量。
    • worker - Web Workers 全局变量。
    • amd - 将 require() 和 define() 定义为像 amd 一样的全局变量。
    • mocha - 添加所有的 Mocha 测试全局变量。
    • jasmine - 添加所有的 Jasmine 版本 1.3 和 2.0 的测试全局变量。
    • jest - Jest 全局变量。
    • phantomjs - PhantomJS 全局变量。
    • protractor - Protractor 全局变量。
    • qunit - QUnit 全局变量。
    • jquery - jQuery 全局变量。
    • prototypejs - Prototype.js 全局变量。
    • shelljs - ShellJS 全局变量。
    • meteor - Meteor 全局变量。
    • mongo - MongoDB 全局变量。
    • applescript - AppleScript 全局变量。
    • nashorn - Java 8 Nashorn 全局变量。
    • serviceworker - Service Worker 全局变量。
    • atomtest - Atom 测试全局变量。
    • embertest - Ember 测试全局变量。
    • webextensions - WebExtensions 全局变量。
    • greasemonkey - GreaseMonkey 全局变量
  3. parser - 指定解析器, eslint默认使用Espree,vue中常使用 Babel-ESLint
  4. rules - eslint规则配置
    • "off" 或 0 - 关闭规则
    • "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
    • "error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)
  5. plugins - 指定要提供第三方插件。在使用插件之前需要安装。插件名称可以省略 eslint-plugin- 前缀。
  6. overrides - 为特定类型的文件指定处理器
    • files - 指定哪些文件要用processor指定的处理器
    • processor - 指定处理器
    • rules - 为处理器附加配置
  7. globals - 全局变量,避免 eslint报错 no-undef
  8. eslintConfig
    • "root": true 指定使用当前文件作为eslint的配置文件
  9. extends - 一个配置文件可以被基础配置中的已启用的规则继承。
    • 指定配置的字符串(配置文件的路径、可共享配置的名称、eslint:recommended 或 eslint:all)
    • 字符串数组:每个配置继承它前面的配置 overrides 使用方式
{
    "plugins": ["a-plugin"],
    "overrides": [
        {
            "files": ["*.md"],
            "processor": "a-plugin/markdown"
        },
        {
            "files": ["**/*.md/*.js"],
            "rules": {
                "strict": "off"
            }
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 配置案例

{   "root": true,
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended",
      "./node_modules/coding-standard/.eslintrc-es6",
    ],
    // 使用  babel-eslint解析器
    "parserOptions": {
      "parser": "babel-eslint"
    },
    // 启用了 browser 和 Node.js 的环境:
    "env": {
        "browser": true,
        "node": true
    },
    // 启用全局变量$, 可以全局使用JQuery
    "globals": {
        "$": "writable", // 可以覆盖$变量
        "$": "readonly" // 不可以重写,
        "xxx": "off" // 该变量不可用

    },
    // 使用vue插件
    "plugins": ["eslint-plugin-vue"],
    // 指定开发校验规则
    "rules": {
        "eqeqeq": "off",
        "curly": "error",
        "quotes": ["error", "double"] // 数组的第一项总是规则的严重程度(数字或字符串)。
        // 配置定义在插件中的一个规则的时候,你必须使用 插件名/规则ID 的形式
        //  "plugin1/quotes": "error"

    },
    // 对test.js, spec.js进行覆盖
    "overrides": [
        {
            "files": ["*-test.js","*.spec.js"],
            "rules": {
                "no-unused-expressions": "off"
            }
        }
    ]}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 文档

  1. rules规则 (opens new window)