版本

id-match

要求标识符与指定的正则表达式匹配

“计算机科学中只有两件难事:缓存失效和命名事物。” — 菲尔·卡尔顿

在一个项目中一致地命名事物是代码创建中一个经常被低估的方面。如果做得正确,它可以为您的团队节省数小时不必要的头疼和误导。此规则允许您精确地定义和强制执行您的团队应该使用的变量和函数名称。不再局限于 camelCase、snake_case、PascalCase 或 HungarianNotation。Id-match 满足您所有的需求!

规则详细信息

此规则要求赋值和 function 定义中的标识符与指定的正则表达式匹配。

选项

此规则有一个用于指定正则表达式的字符串选项。

例如,要强制执行驼峰命名约定

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

此规则使用 "^[a-z]+([A-Z][a-z]+)*$" 选项的**错误**代码示例

在游乐场中打开
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/

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

class My_Class {}

class myClass {
    do_something() {}
}

class anotherClass {
    #do_something() {}
}

此规则使用 "^[a-z]+([A-Z][a-z]+)*$" 选项的**正确**代码示例

在游乐场中打开
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$"]*/

var myFavoriteColor   = "#112C85";
var foo = bar.baz_boom;
var foo = { qux: bar.baz_boom };
do_something();
var 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 不检查解构的标识符

属性

此规则使用 "^[a-z]+([A-Z][a-z]+)*$", { "properties": true } 选项的**错误**代码示例

在游乐场中打开
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/

var obj = {
    my_pref: 1
};

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

类字段

此规则使用 "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true } 选项的**错误**代码示例

在游乐场中打开
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }]*/

class myClass {
    my_pref = 1;
}

class anotherClass {
    #my_pref = 1;
}

仅声明

此规则使用 "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true } 选项的**正确**代码示例

在游乐场中打开
/*eslint id-match: [2, "^[a-z]+([A-Z][a-z]+)*$", { "onlyDeclarations": true }]*/

foo = __dirname;

ignoreDestructuring: false

此规则使用默认 "^[^_]+$", { "ignoreDestructuring": false } 选项的**错误**代码示例

在游乐场中打开
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": false }]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

var { category_id: category_alias } = query;

var { category_id: categoryId, ...other_props } = query;

ignoreDestructuring: true

此规则使用 "^[^_]+$", { "ignoreDestructuring": true } 选项的**错误**代码示例

在游乐场中打开
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

var { category_id: category_alias } = query;

var { category_id, ...other_props } = query;

此规则使用 "^[^_]+$", { "ignoreDestructuring": true } 选项的**正确**代码示例

在游乐场中打开
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

何时不使用它

如果您不想对所有标识符强制执行任何特定的命名约定,或者您的命名约定过于复杂而无法通过配置此规则来强制执行,那么您不应该启用此规则。

版本

此规则是在 ESLint v1.0.0 中引入的。

资源

更改语言