設定外掛程式
您可以使用各種不同的方式,透過外掛程式擴充 ESLint。外掛程式可以包含
- 自訂規則,以驗證您的程式碼是否符合特定期望,以及在不符合期望時該怎麼做。
- 自訂設定。請參閱外掛程式的文件,以了解如何使用這些設定的詳細資訊。
- 自訂處理器,以從其他類型的檔案中擷取 JavaScript 程式碼,或在程式碼檢查之前預先處理程式碼。
設定外掛程式
ESLint 支援使用第三方外掛程式。外掛程式只是符合 ESLint 識別的特定介面的物件。
若要設定設定檔內的外掛程式,請使用 plugins
鍵,其中包含一個物件,其屬性代表外掛程式命名空間,值等於外掛程式物件。
// eslint.config.js
import example from "eslint-plugin-example";
export default [
{
plugins: {
example
},
rules: {
"example/rule1": "warn"
}
}
];
設定本地外掛程式
外掛程式不需要發佈到 npm 即可搭配 ESLint 使用。您也可以直接從檔案載入外掛程式,如此範例所示
// eslint.config.js
import local from "./my-local-plugin.js";
export default [
{
plugins: {
local
},
rules: {
"local/rule1": "warn"
}
}
];
在此,會使用 local
的命名空間,但您也可以改用您喜歡的任何名稱。
設定虛擬外掛程式
外掛程式定義可以直接在您的設定中虛擬建立。例如,假設您有一個名為 my-rule.js
的檔案中包含的規則,您想要在設定中啟用它。您可以定義一個虛擬外掛程式來執行此操作,如此範例所示
// eslint.config.js
import myRule from "./rules/my-rule.js";
export default [
{
plugins: {
local: {
rules: {
"my-rule": myRule
}
}
},
rules: {
"local/my-rule": "warn"
}
}
];
在此,命名空間 local
用於定義虛擬外掛程式。然後,規則 myRule
會在虛擬外掛程式的 rules
物件內被指派名稱 my-rule
。(如需外掛程式的完整格式,請參閱建立外掛程式。)然後,您可以參考規則 local/my-rule
來設定它。
使用外掛程式規則
您可以使用外掛程式中包含的特定規則。若要執行此操作,請使用 plugins
鍵在設定物件中指定外掛程式。plugin
鍵的值是一個物件,其中外掛程式的名稱是屬性名稱,值是外掛程式物件本身。以下範例所示
// eslint.config.js
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsdoc: jsdoc
},
rules: {
"jsdoc/require-description": "error",
"jsdoc/check-values": "error"
}
}
];
在此設定中,JSDoc 外掛程式被定義為具有 jsdoc
的名稱。每個規則名稱中的 jsdoc/
前置詞表示該規則來自具有該名稱的外掛程式,而不是來自 ESLint 本身。
由於外掛程式的名稱和外掛程式物件都是 jsdoc
,因此您也可以將設定縮短為這樣
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsdoc
},
rules: {
"jsdoc/require-description": "error",
"jsdoc/check-values": "error"
}
}
];
雖然這是最常見的慣例,但您不需要使用外掛程式指定的相同名稱。您可以指定您喜歡的任何前置詞,例如
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsd: jsdoc
},
rules: {
"jsd/require-description": "error",
"jsd/check-values": "error"
}
}
];
此設定物件會使用 jsd
作為前置詞外掛程式,而不是 jsdoc
。
指定處理器
外掛程式可能會提供處理器。處理器可以從其他類型的檔案中擷取 JavaScript 程式碼,然後讓 ESLint 檢查 JavaScript 程式碼。或者,處理器可以在預處理期間轉換 JavaScript 程式碼。
若要在設定檔中指定處理器,請使用 processor
鍵,並以 命名空間/處理器名稱
格式指派處理器的名稱。例如,以下程式碼會針對 *.md
檔案使用 @eslint/markdown
的處理器。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
}
];
處理器可以建立像是 0.js
和 1.js
的具名程式碼區塊。ESLint 會將這類具名程式碼區塊當作原始檔案的子檔案處理。您可以使用其他設定物件,為具名程式碼區塊指定其他設定。例如,以下程式碼會針對 Markdown 檔案中以 .js
結尾的具名程式碼區塊停用 strict
規則。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
// applies to all JavaScript files
{
rules: {
strict: "error"
}
},
// applies to Markdown files
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
},
// applies only to JavaScript blocks inside of Markdown files
{
files: ["**/*.md/*.js"],
rules: {
strict: "off"
}
}
];
只有在具名程式碼區塊是 JavaScript 檔案,或符合設定物件中的 files
項目時,ESLint 才會檢查具名程式碼區塊。如果要檢查非 JavaScript 的具名程式碼區塊,請務必新增一個具有相符 files
項目的設定物件。另請注意,全域忽略也會套用至具名程式碼區塊。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
// applies to Markdown files
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
},
// applies to all .jsx files, including jsx blocks inside of Markdown files
{
files: ["**/*.jsx"],
languageOptions: {
parserOptions: {
ecmaFeatures: {
jsx: true
}
}
}
},
// ignore jsx blocks inside of test.md files
{
ignores: ["**/test.md/*.jsx"]
}
];
指定語言
外掛程式可能會提供語言。語言允許 ESLint 檢查 JavaScript 以外的程式語言。若要在設定檔中指定語言,請使用 language
鍵,並以 命名空間/語言名稱
格式指派語言的名稱。例如,以下程式碼會針對 *.json
檔案使用 @eslint/json
的 json/jsonc
語言。
// eslint.config.js
import json from "@eslint/json";
export default [
{
files: ["**/*.json"],
plugins: {
json
},
language: "json/jsonc"
}
];