版本

共享設定

若要共享您的 ESLint 設定,請建立可共享的設定檔。您可以將您的可共享設定檔發布到 npm,以便其他人可以下載並在他們的 ESLint 專案中使用它。

本頁說明如何建立和發布可共享的設定檔。

建立可共享的設定檔

可共享的設定檔僅僅是匯出設定物件或陣列的 npm 套件。首先,像平常一樣建立一個 Node.js 模組

雖然您可以隨意命名套件,但我們建議使用以下慣例之一,使您的套件更容易識別

  • eslint-config- 開頭,例如 eslint-config-myconfig
  • 對於 npm 作用域模組,請使用 @scope/eslint-config 命名或前綴模組,例如 @scope/eslint-config@scope/eslint-config-myconfig

在您的模組中,從模組的 main 入口點檔案匯出可共享的設定檔。預設的主要入口點是 index.js。例如

// index.js
export default [
    {
        languageOptions: {
            globals: {
                MyGlobal: true
            }
        },

        rules: {
            semi: [2, "always"]
        }

    }
];

由於 index.js 檔案只是 JavaScript,您可以從檔案讀取這些設定,或動態產生它們。

發布可共享的設定檔

一旦您的可共享設定檔準備就緒,您可以將其發布到 npm 以與他人共享。我們建議在 package.json 檔案中使用 eslinteslintconfig 關鍵字,以便其他人可以輕鬆找到您的模組。

您應該在 package.json 中使用 peerDependencies 欄位宣告您對 ESLint 的依賴性。為了確保未來相容性,建議使用 “>=” 範圍語法來宣告依賴性,並使用最低要求的 ESLint 版本。例如

{
    "peerDependencies": {
        "eslint": ">= 9"
    }
}

如果您的可共享設定檔依賴外掛程式或自訂解析器,您應該在您的 package.json 中將這些套件指定為 dependencies

使用可共享的設定檔

若要使用可共享的設定檔,請在 eslint.config.js 檔案內匯入套件並將其新增到匯出的陣列中,如下所示

// eslint.config.js
import myconfig from "eslint-config-myconfig";

export default [
    ...myconfig
];

覆寫來自可共享設定檔的設定

您可以透過在匯入可共享設定檔後,直接將設定新增到您的 eslint.config.js 檔案中,來覆寫來自可共享設定檔的設定。例如

// eslint.config.js
import myconfig from "eslint-config-myconfig";

export default [
    ...myconfig,

    // anything from here will override myconfig
    {
        rules: {
            "no-unused-vars": "warn"
        }
    }
];

共享多個設定檔

由於可共享的設定檔只是 npm 套件,您可以從同一個套件匯出任意數量的設定檔。除了使用 package.json 中的 main 條目指定預設設定檔之外,您還可以透過在您的 npm 套件中新增一個新檔案,然後從您的 eslint.config.js 檔案中引用它,來指定其他可共享的設定檔。

例如,您可以在您的 npm 套件的根目錄中建立一個名為 my-special-config.js 的檔案,並匯出一個設定檔,例如

// my-special-config.js
export default {
    rules: {
        quotes: [2, "double"]
    }
};

然後,假設您正在使用套件名稱 eslint-config-myconfig,您可以透過以下方式存取額外的設定檔

// eslint.config.js
import myconfig from "eslint-config-myconfig";
import mySpecialConfig from "eslint-config-myconfig/my-special-config.js";

export default [
    ...myconfig,
    mySpecialConfig,

    // anything from here will override myconfig and mySpecialConfig
    {
        rules: {
            "no-unused-vars": "warn"
        }
    }
];

延伸閱讀

變更語言