id-match
要求标识符匹配指定的正则表达式
此规则目前处于冻结状态,不接受功能请求。
“计算机科学中只有两件难事:缓存失效和命名。” — Phil Karlton
在一个项目中一致地命名事物是代码创建中经常被低估的一个方面。如果做得正确,它可以为您的团队节省数小时不必要的挠头和误入歧途。此规则允许您精确定义和强制执行团队应使用的变量和函数名称。不再将自己限制为 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]+)*$"]*/
const = "#112C85";
const = "#112C85";
const = "#112C85";
const = "#112C85";
function () {
// ...
}
class {}
class myClass {
() {}
}
class anotherClass {
() {}
}
对于此规则,使用 "^[a-z]+([A-Z][a-z]+)*$"
选项的正确代码示例
/*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
仅要求var
、const
、let
、function
和class
声明与指定的正则表达式匹配"ignoreDestructuring": false
(默认) 对解构的标识符强制执行id-match
"ignoreDestructuring": true
不检查解构的标识符
properties
对于此规则,使用 "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }
选项的错误代码示例
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "properties": true }]*/
const obj = {
: 1
};
obj. = function() {
// ...
};
classFields
对于此规则,使用 "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }
选项的错误代码示例
/*eslint id-match: ["error", "^[a-z]+([A-Z][a-z]+)*$", { "classFields": true }]*/
class myClass {
= 1;
}
class anotherClass {
= 1;
}
onlyDeclarations
对于此规则,使用 "^[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 }]*/
const { } = query;
const { = 1 } = query;
const { : } = query;
const { category_id: } = query;
const { category_id: , ... } = query;
ignoreDestructuring: true
对于此规则,使用 "^[^_]+$", { "ignoreDestructuring": true }
选项的错误代码示例
/*eslint id-match: [2, "^[^_]+$", { "ignoreDestructuring": true }]*/
const { category_id: } = query;
const { category_id: , ... } = query;
对于此规则,使用 "^[^_]+$", { "ignoreDestructuring": true }
选项的正确代码示例
/*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 中引入。