如何仅对catch块忽略ESLint的keyword-spacing规则冲突?
解决ESLint自定义catch规则与keyword-spacing的冲突问题
你可以通过keyword-spacing规则的自定义覆盖配置,仅针对catch关键字设置差异化的空格规则,无需禁用整个规则或使用单行忽略注释。
具体配置如下(以ESLint JSON配置文件为例):
{ "rules": { "keyword-spacing": [ "error", { "after": true, // 保持其他关键字的默认空格要求 "overrides": [ // 当catch后紧跟括号(带参数)时,不要求关键字后加空格 { "keyword": "catch", "after": false, "when": "hasParens" }, // 当catch后没有括号(不带参数)时,要求关键字后加空格 { "keyword": "catch", "after": true, "when": "noParens" } ] } ] } }
配置说明
overrides字段用于给特定关键字单独设置规则,不会影响if、else、for等其他关键字的空格检查。when选项通过hasParens/noParens判断catch后是否存在括号,分别匹配你需要的两种格式:- 带参数的
catch(err):catch与括号间无空格,符合after: false的要求。 - 不带参数的
catch {}:catch与大括号间有空格,符合after: true的要求。
- 带参数的
这样配置后,自定义规则与keyword-spacing就能兼容,同时保留后者对其他关键字的格式规范作用。
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

