版本

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 中引入。

资源

更改语言