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

标签 javascript eslint

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

我想要这样的规则:

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

上面的语法是我发明的,我希望明显的意思是“只有当上面的正则表达式名称不匹配时才会提示。”

或者,如果有一种方法可以在 .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 .

关于javascript - 我可以创建一个 ESLint 规则来允许所有全局变量匹配一个正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39733313/

相关文章:

javascript - 如何通过使用 Eslint + Prettier 删除空行来区分 JSON 代码格式

javascript - 根据eslint配置保存时在atom编辑器中美化js代码

javascript - 拖放图像上传不适用于某些浏览器

javascript - d3.js 带标签的动态数据

javascript - 单击按钮 JavaScript 为文本添加下划线

javascript - onChange 不会在 Safari 中的下拉列表中触发,但适用于 IE、FF、Chrome 和 Opera

javascript - 在 ESlint 中执行 "linebreak-style"规则有多重要?我可以把它关掉吗?

javascript - 从主文档中的 JavaScript 获取 IFrame 的文档

typescript - 类型 'null' 的参数不可分配给类型 'TableContinuationToken' 的参数

angular - 是否有用于检测未使用的类属性的 eslint 规则?