ESlint 配置從0到1 (二)

配置插件

ESlint 支持第三方插件,在使用以前須要先將插件下載到本地。這裏須要注意的是,若是 ESlint 是全局安裝的,那麼第三方插件也必需要安裝爲全局;局部安裝也同理。node

在配置文件中經過設置 plugins 的屬性值來配置插件,plugins 值是一組插件名列表,插件名能夠省略前綴的 eslint-plugin。好比:react

{
  "plugins": [
    "plugin1",
    "eslint-plugin-plugin2"
  ]
}
複製代碼

添加共享設置

ESlint 支持在配置文件中添加共享設置,在共享設置中設置的對象能被任一即將執行的規則獲取到,因此這在開發自定義規則插件而言很重要,可以下設置:git

{
  "settings": {
    "sharedData": "Hello"
  }
}
複製代碼

配置文件的使用

配置文件的使用分爲兩種方式:es6

  1. 使用 .eslintrc.* 或 package.json 文件來進行配置。 ESlint 會自動沿着當前文件的父目錄直到文件系統的根目錄(除非配置文件中指定了 root: true)一直查找這兩個文件。這種方式有利於對一個文件的不一樣部分採用不一樣的配置或是當你想要不傳遞配置文件也能正常使用 ESlint 的情景。
  2. 另外一種是經過命令行的方式制定配置文件,使用方式以下:
// 使用這個文件做爲額外的配置文件,如存在 .eslintrc.* 文件則覆蓋選項
eslint -c myconfig.json 
// 若但願徹底不用 .eslintrc.* 中的配置,不過要注意須要和 -c 命令搭配使用
eslint --no-eslintrc
複製代碼

配置文件格式優先級

ESlint支持幾種格式的配置文件,優先級排序以下:json

  1. .eslintrc.js
  2. .eslintrc.yaml
  3. .eslintrc.yml
  4. .eslintrc.json
  5. .eslintrc
  6. package.json

配置的層疊以及優先級

配置的層疊機制爲:距離文件最近的 .eslintrc 優先級最高,其次是父文件夾中的,以此類推。若趕上不一樣的 .eslintrc 文件之間有衝突的屬性,則優先級高的覆蓋優先級低的(同級別的配置可根據上面提到的文件格式優先級決定)。數組

因爲 ESlint 默認會從文件當前目錄一直查找到系統根目錄,可能會致使一些意料以外的結果。要想避免這種默認行爲,能夠在當前項目的根目錄中的配置文件添加 root: true,配置以後往上查找會在項目根目錄終止。bash

完整的優先級由高到低排序以下:ide

  • 行內配置
    1. /eslint-disable/ and /eslint-enable/
    2. /global/
    3. /eslint/
    4. /eslint-env/
  • CLI 配置選項
    1. --global
    2. --rule
    3. --env
    4. -c, --config
  • 配置文件,優先級如上所述

擴展配置文件

在配置文件中,經過配置 extends 咱們能夠在基礎配置之上對規則進行擴展。extend 可選的值有:ui

  • 用來指定配置的字符串
  • 字符串組成的數組,其中每一個額外的配置都是做爲前面配置的擴展

而在配置文件中定義的 rules 能夠在擴展配置中進行擴展(如存在衝突則覆蓋)。spa

官方提供的擴展有 eslint:recommendedeslint:all,其中 eslint:recommended 包括了規則列表中有 ✔ 標記的規則項;eslint:all 包含了當前版本的 ESlint 包含的全部規則項,因爲這個擴展常常隨着 ESLint 的版本更新變更,故在生產模式下不推薦使用。

咱們也可使用插件中的配置,對於這類擴展,extends 屬性值能夠由如下部分組成:

  • plugin:
  • 包名稱(能夠省略前綴)
  • /
  • 配置名稱

好比下面這個擴展:

{
  "plugins": [
    "react"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended"
  ],
  "rules": {
    "no-set-state": "off"
  }
}
複製代碼

除此以外,還可使用自定義的配置文件,好比:

{
  "extends": [
    "./node_modules/coding-standard/eslintDefaults.js",
    "./node_modules/coding-standard/.eslintrc-es6",
    "./node_modules/coding-standard/.eslintrc-jsx"
  ],
  "rules": {
    "eqeqeq": "warn"
  }
}
複製代碼

基於匹配模式的配置

有時候咱們須要對配置進行更精細的控制,好比同一個目錄下的文件要有不一樣的配置。要達到這個目的,咱們能夠將配置寫入 overrides 屬性中,它將只被應用到符合匹配模式中的文件中。具體規則以下:

  • 匹配模式只能被配置在配置文件中。
  • 匹配是基於配置文件所處文件夾的路徑。好比配置文件所處路徑爲 /User/imyjay/my-project/.eslintrc.js,須要匹配的文件路徑是 /User/imyjay/my-project/src/jay.js,那麼咱們要填入的匹配應爲 src/jay.js
  • 匹配模式中的配置比當前配置文件內的普通配置優先級要高,且越靠後的匹配優先級越高。
  • 在匹配模式中的配置項能夠是除了 extendsoverridesroot 以外的任意項。
  • 也能夠在匹配模式中的指定移除特定匹配,能夠參照如下的例子:
{
  "rules": {
    "quotes": ["error", "double"]
  },

  "overrides": [
    {
      "files": ["bin/*.js", "lib/*.js"],
      "excludedFiles": "*.test.js",
      "rules": {
        "quotes": ["error", "single"]
      }
    }
  ]
}
複製代碼

爲 lint 配置擴展名

目前只能經過 --ext 命令進行這一操做。

忽略文件和文件夾

  • .eslintignore 經過在項目根目錄建立 .eslintignore 文件,再講須要忽略的文件和文件夾名稱或模式填入,就能夠達到忽略的目的。.eslintignore 有且只能有一個,且只有當前工做目錄下的會被使用。(注:語法和 .gitignore 相同)
  • 在命令行中使用 --ignore-path
  • 在 package.json 中配置 eslintIgnore 屬性,好比:"eslintIgnore": ["hello.js", "world.js"]
相關文章
相關標籤/搜索