分享設定 (已棄用)
若要分享您的 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'
};
在最後一個檔案中,再次看到為了正確解析您的設定,您需要包含完整的套件路徑。