版本

id-match

要求識別符號符合指定的正規表示式

❄️ 已凍結

此規則目前為凍結狀態,且不接受功能請求。

「電腦科學中只有兩件難事:快取失效和命名。」— Phil Karlton

在專案中一致地命名事物是程式碼建立中經常被低估的一個方面。如果做得正確,它可以為您的團隊節省數小時不必要的絞盡腦汁和誤入歧途。此規則允許您精確定義和強制執行團隊應使用的變數和函數名稱。不再將自己限制為 camelCase、snake_case、PascalCase 或 HungarianNotation。id-match 涵蓋您的所有需求!

規則詳細資訊

此規則要求賦值和 function 定義中的識別符號符合指定的正規表示式。

選項

此規則具有字串選項,用於指定的正規表示式。

例如,要強制執行 camelcase 命名慣例

{
    "id-match": ["error", "^[a-z]+([A-Z][a-z]+)*$"]
}

使用 "^[a-z]+([A-Z][a-z]+)*$" 選項時,此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/

const my_favorite_color = "#112C85";
const _myFavoriteColor  = "#112C85";
const myFavoriteColor_  = "#112C85";
const MY_FAVORITE_COLOR = "#112C85";
function do_something() {
    // ...
}

class My_Class {}

class myClass {
    do_something() {}
}

class anotherClass {
    #do_something() {}
}

使用 "^[a-z]+([A-Z][a-z]+)*$" 選項時,此規則的正確程式碼範例

在 Playground 中開啟
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/

const myFavoriteColor   = "#112C85";
const foo = bar.baz_boom;
const buz = { qux: bar.baz_boom };
do_something();
const obj = {
    my_pref: 1
};

class myClass {}

class anotherClass {
    doSomething() {}
}

class oneMoreClass {
    #doSomething() {}
}

此規則具有物件選項

  • "properties": false (預設) 不檢查物件屬性
  • "properties": true 要求物件字面屬性和成員表達式賦值屬性符合指定的正規表示式
  • "classFields": false (預設) 不檢查類別欄位名稱
  • "classFields": true 要求類別欄位名稱符合指定的正規表示式
  • "onlyDeclarations": false (預設) 要求所有變數名稱符合指定的正規表示式
  • "onlyDeclarations": true 僅要求 varconstletfunctionclass 宣告符合指定的正規表示式
  • "ignoreDestructuring": false (預設) 對解構的識別符號強制執行 id-match
  • "ignoreDestructuring": true 不檢查解構的識別符號

properties

使用 "^[a-z]+([A-Z][a-z]+)*$", { "properties": true } 選項時,此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/

const obj = {
    my_pref: 1
};

obj.do_something = function() {
    // ...
};

classFields

使用 "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true } 選項時,此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }]*/

class myClass {
    my_pref = 1;
}

class anotherClass {
    #my_pref = 1;
}

onlyDeclarations

使用 "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true } 選項時,此規則的正確程式碼範例

在 Playground 中開啟
/*eslint id-match: [2, "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }]*/

foo = __dirname;

ignoreDestructuring: false

使用預設 "^[^_]+$", { "ignoreDestructuring": false } 選項時,此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": false }]*/

const { category_id } = query;

const { categoryid_Default = 1 } = query;

const { category_ids: category_ids } = query;

const { category_id: category_Alias } = query;

const { category_id: category_IdRenamed, ...other_Props } = query;

ignoreDestructuring: true

使用 "^[^_]+$", { "ignoreDestructuring": true } 選項時,此規則的不正確程式碼範例

在 Playground 中開啟
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

const { category_id: category_alias } = query;

const { category_id: category_Id, ...other_props } = query;

使用 "^[^_]+$", { "ignoreDestructuring": true } 選項時,此規則的正確程式碼範例

在 Playground 中開啟
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

const { category_id } = query;

const { category_Id = 1 } = query;

const { category_alias: category_alias } = query;

何時不該使用

如果您不想對所有識別符號強制執行任何特定的命名慣例,或者您的命名慣例太過複雜而無法透過設定此規則來強制執行,那麼您不應啟用此規則。

版本

此規則在 ESLint v1.0.0 中引入。

資源

變更語言