我可以创建一个 ESLint 规则来允许所有全局变量匹配一个正则表达式吗?

Can I create an ESLint rule that will allow all globals matching a regular expression?

我正在寻找 no-undef 规则的例外情况,该规则将允许未声明的全局变量匹配命名规则。在这种情况下,应该允许像 [A-Z][a-z]*Model 这样的正则表达式,所以 "CustomerModel" 和 "PatientModel" 都将被允许,因为在每个单元中放置 /* global CustomerModel */ 太麻烦了即使在 eslint 全局配置中,列出每个 *Model 全局也很麻烦。

我想要这样的规则:

"rules": {
        "no-undef": [2, "[A-Z][a-z]*Model"],

上面的语法是我发明的,我希望显然意味着 "only complain when the above reg-expression name is not matched."

或者,如果有一种方法可以在 .eslintrc 文件全局列表中指定正则表达式匹配。

好吧,如果您愿意,可以创建自己的规则。

no-undef rule 的来源很短。可能您需要替换那里定义的条件

if (!considerTypeOf && hasTypeOfOperator(identifier)) {
    return;
}

类似

if (/Model$/.test(identifier.name) || !considerTypeOf && hasTypeOfOperator(identifier)) {
    return;
}

确保以 Model 结尾的全局标识符不会触发错误。

您可能还想参数化标识符格式,而不是将其硬编码在源代码中。 由于您是一位经验丰富的程序员,您一定能够自己弄清楚这种方法的细节和注意事项。

这可能是工作中最简单的部分。它仍然需要一些机制才能让您的自定义规则起作用。有关如何创建自定义规则的更多信息,请参见此处:http://eslint.org/docs/developer-guide/working-with-rules.