設定外掛程式 (已停用)
您可以使用多種不同的方式透過外掛程式擴充 ESLint。外掛程式可以包含
- 自訂規則,以驗證您的程式碼是否符合特定期望,以及在不符合期望時該怎麼做。
- 自訂設定。
- 自訂環境。
- 自訂處理器,從其他種類的檔案中提取 JavaScript 程式碼,或在進行程式碼檢查前預先處理程式碼。
設定外掛程式
ESLint 支援使用第三方外掛程式。在使用外掛程式之前,您必須使用 npm 安裝它。
若要在設定檔內設定外掛程式,請使用 plugins
鍵,其中包含外掛程式名稱的清單。eslint-plugin-
前綴可以從外掛程式名稱中省略。
{
"plugins": [
"plugin1",
"eslint-plugin-plugin2"
]
}
以及在 YAML 中
---
plugins:
- plugin1
- eslint-plugin-plugin2
注意事項
- 外掛程式會相對於設定檔解析。換句話說,ESLint 會載入外掛程式,如同使用者在設定檔中執行
require('eslint-plugin-pluginname')
所取得的外掛程式一樣。 - 基礎設定 (由
extends
設定載入) 中的外掛程式相對於衍生的設定檔。例如,如果./.eslintrc
具有extends: ["foo"]
且eslint-config-foo
具有plugins: ["bar"]
,則 ESLint 會從./node_modules/
(而不是./node_modules/eslint-config-foo/node_modules/
) 或上層目錄中尋找eslint-plugin-bar
。因此,設定檔和基礎設定中的每個外掛程式都會被唯一解析。
命名慣例
包含外掛程式
eslint-plugin-
前綴對於非作用域和作用域套件都可以省略。
非作用域套件
{
// ...
"plugins": [
"jquery", // means eslint-plugin-jquery
]
// ...
}
作用域套件
{
// ...
"plugins": [
"@jquery/jquery", // means @jquery/eslint-plugin-jquery
"@foobar" // means @foobar/eslint-plugin
]
// ...
}
使用外掛程式
在外掛程式中定義的規則、環境和設定必須使用以下慣例來參考
eslint-plugin-foo
→foo/a-rule
@foo/eslint-plugin
→@foo/a-config
@foo/eslint-plugin-bar
→@foo/bar/a-environment
例如
{
// ...
"plugins": [
"jquery", // eslint-plugin-jquery
"@foo/foo", // @foo/eslint-plugin-foo
"@bar" // @bar/eslint-plugin
],
"extends": [
"plugin:@foo/foo/recommended",
"plugin:@bar/recommended"
],
"rules": {
"jquery/a-rule": "error",
"@foo/foo/some-rule": "error",
"@bar/another-rule": "error"
},
"env": {
"jquery/jquery": true,
"@foo/foo/env-foo": true,
"@bar/env-bar": true,
}
// ...
}
指定處理器
外掛程式可以提供處理器。處理器可以從其他種類的檔案中提取 JavaScript 程式碼,然後讓 ESLint 檢查 JavaScript 程式碼。或者,處理器可以在預先處理期間轉換 JavaScript 程式碼。
若要在設定檔中指定處理器,請使用 processor
鍵,並使用斜線串連外掛程式名稱和處理器名稱。例如,以下範例啟用外掛程式 a-plugin
提供的處理器 a-processor
{
"plugins": ["a-plugin"],
"processor": "a-plugin/a-processor"
}
若要為特定種類的檔案指定處理器,請結合使用 overrides
鍵和 processor
鍵。例如,以下範例針對 *.md
檔案使用處理器 a-plugin/markdown
。
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
}
]
}
處理器可能會建立具名的程式碼區塊,例如 0.js
和 1.js
。ESLint 將此類具名的程式碼區塊視為原始檔案的子檔案來處理。您可以在設定的 overrides
區段中,為具名的程式碼區塊指定其他設定。例如,以下範例停用 Markdown 檔案中以 .js
結尾的具名程式碼區塊的 strict
規則。
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
},
{
"files": ["**/*.md/*.js"],
"rules": {
"strict": "off"
}
}
]
}
ESLint 會檢查具名程式碼區塊的檔案路徑,然後在任何 overrides
項目不符合檔案路徑時忽略這些區塊。如果您想要檢查 *.js
以外的具名程式碼區塊,請務必新增 overrides
項目。