版本

設定外掛程式

您可以使用各種不同的方式,透過外掛程式擴充 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.js1.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/jsonjson/jsonc 語言。

// eslint.config.js
import json from "@eslint/json";

export default [
    {
        files: ["**/*.json"],
        plugins: {
            json
        },
        language: "json/jsonc"
    }
];

常見問題

變更語言