分享配置 (已棄用)
若要分享您的 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
檔案中使用 eslint
和 eslintconfig
關鍵字,以便其他人可以輕鬆找到您的模組。
您應該在 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'
};
在最後一個檔案中,再次看到為了正確解析您的配置,您需要包含完整的套件路徑。