版本

分享配置 (已棄用)

若要分享您的 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
module.exports = {

    globals: {
        MyGlobal: true
    },

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

};

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

發布可分享的配置

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

您應該在 package.json 中使用 peerDependencies 欄位來宣告您對 ESLint 的依賴。建議使用「>=」範圍語法來宣告對未來相容性的依賴,並使用所需的最低 ESLint 版本。例如

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

如果您的可分享配置依賴外掛程式,您也應該將其指定為 peerDependency (外掛程式將相對於最終使用者的專案載入,因此最終使用者必須安裝他們需要的外掛程式)。但是,如果您的可分享配置依賴自訂剖析器或其他可分享的配置,您可以在 package.json 中將這些套件指定為 dependencies

您也可以在發布之前,透過全域連結模組來在您的電腦上測試可分享的配置。輸入

npm link

然後,在想要使用您的可分享配置的專案中,輸入

npm link eslint-config-myconfig

請務必將 eslint-config-myconfig 取代為您模組的實際名稱。

使用可分享的配置

若要使用可分享的配置,請在設定檔的 extends 欄位中包含配置名稱。對於值,請使用您的模組名稱。例如

{
    "extends": "eslint-config-myconfig"
}

您也可以省略 eslint-config-,ESLint 會自動假設它。

{
    "extends": "myconfig"
}

您無法將可分享的配置與 ESLint CLI --config 旗標一起使用。

npm 範圍模組

npm 範圍模組也以多種方式支援。

您可以使用模組名稱

{
    "extends": "@scope/eslint-config"
}

您也可以省略 eslint-config,ESLint 會自動假設它。

{
    "extends": "@scope"
}

模組名稱也可以自訂。例如,如果您的套件名為 @scope/eslint-config-myconfig,則可以將配置指定為

{
    "extends": "@scope/eslint-config-myconfig"
}

您也可以省略 eslint-config 來指定配置,如下所示

{
    "extends": "@scope/myconfig"
}

覆寫可分享配置的設定

您可以透過將設定直接新增到您的 .eslintrc 檔案中,來覆寫可分享配置中的設定。

分享多個配置

您可以在同一個 npm 套件中分享多個配置。依照建立可分享的配置章節中的指示,為套件指定預設配置。您可以透過將新檔案新增到您的 npm 套件,然後從您的 ESLint 配置中參考它來指定其他可分享的配置。

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

// my-special-config.js
module.exports = {
    rules: {
        quotes: [2, "double"]
    }
};

然後,假設您使用套件名稱 eslint-config-myconfig,您可以透過以下方式存取其他配置

{
    "extends": "myconfig/my-special-config"
}

當使用 範圍模組時,無法省略 eslint-config 命名空間。這樣做會導致如上所述的解析錯誤。假設套件名稱為 @scope/eslint-config,則可以透過以下方式存取其他配置

{
    "extends": "@scope/eslint-config/my-special-config"
}

請注意,您可以從檔案名稱中省略 .js

重要: 我們強烈建議始終為您的外掛程式包含預設配置,以避免錯誤。

本機配置檔案解析

如果您需要建立多個可以互相擴充且位於不同目錄的配置,您可以建立一個可處理此情境的可分享配置。

例如,假設您使用套件名稱 eslint-config-myconfig,而您的套件看起來像這樣

myconfig
├── index.js
└─┬ lib
  ├── defaults.js
  ├── dev.js
  ├── ci.js
  └─┬ ci
    ├── frontend.js
    ├── backend.js
    └── common.js

index.js 檔案中,您可以執行類似以下的操作

module.exports = require('./lib/ci.js');

現在,在套件內部,您有 /lib/defaults.js,其中包含

module.exports = {
    rules: {
        'no-console': 1
    }
};

/lib/ci.js 內部,您有

module.exports = require('./ci/backend');

/lib/ci/common.js 內部

module.exports = {
    rules: {
        'no-alert': 2
    },
    extends: 'myconfig/lib/defaults'
};

儘管位於完全不同的目錄中,您會看到所有 extends 都必須使用要擴充的配置檔案的完整套件路徑。

現在在 /lib/ci/backend.js 內部

module.exports = {
    rules: {
        'no-console': 1
    },
    extends: 'myconfig/lib/ci/common'
};

在最後一個檔案中,再次看到為了正確解析您的配置,您需要包含完整的套件路徑。

延伸閱讀

變更語言