使用 ESLint 或 Prettier 为 JS switch-cases 强制使用大括号
Enforce curly braces for JS switch-cases with ESLint or Prettier
我想在 JS 中为 switch-cases 强制使用花括号,可能使用 ESLint 或 Prettier。您知道任何相关的配置吗?如果不知道,还有其他的 linting 或格式化工具吗?
我尝试将 ESLint 规则 curly
设置为 "all"
,但它并没有抱怨我的 curly-less switch-cases。
有一个switch-case ESLint plugin,但是我没有在它的文档中找到这样的规则,在它的源代码中也没有。
例子
错误:
switch (foo) {
case "bar":
return 1;
case "baz":
return 2;
default:
return 0;
}
正确:
switch (foo) {
case "bar": {
return 1;
}
case "baz": {
return 2;
}
default: {
return 0;
}
}
*这适用于没有插件的eslint。
curly
规则不适用于 switch case 中的块。不幸的是,没有好的规则可以满足您的需要。您可以在此处建议规则(或编辑卷曲规则)https://github.com/eslint/eslint/issues。
以下 eslint 自定义规则存储库中的 switch-braces
规则似乎就是您要找的那个:
https://github.com/justinanastos/eslint-plugin-justinanastos/blob/master/docs/rules/switch-braces.md
你可以试试看。
你可以试试'no-restricted-syntax' rule with such selector.
带有详细输出(一个案例的每个非块子项都被报告为错误):
'no-restricted-syntax': ['error',
{
'selector': 'SwitchCase > *.consequent[type!="BlockStatement"]',
'message': 'Switch cases without blocks are disallowed.'
},
],
如果您的解析器支持 :has
,您可以试试这个,但它可能会产生误报:因为子(相对)选择器目前在 :has
中似乎是不允许的,后代非块 .consequent
节点可能会抛出。
'no-restricted-syntax': ['error',
{
'selector': 'SwitchCase:has(*.consequent[type!="BlockStatement"])',
'message': 'Switch cases without blocks are disallowed.'
},
],
我想在 JS 中为 switch-cases 强制使用花括号,可能使用 ESLint 或 Prettier。您知道任何相关的配置吗?如果不知道,还有其他的 linting 或格式化工具吗?
我尝试将 ESLint 规则 curly
设置为 "all"
,但它并没有抱怨我的 curly-less switch-cases。
有一个switch-case ESLint plugin,但是我没有在它的文档中找到这样的规则,在它的源代码中也没有。
例子
错误:
switch (foo) {
case "bar":
return 1;
case "baz":
return 2;
default:
return 0;
}
正确:
switch (foo) {
case "bar": {
return 1;
}
case "baz": {
return 2;
}
default: {
return 0;
}
}
*这适用于没有插件的eslint。
curly
规则不适用于 switch case 中的块。不幸的是,没有好的规则可以满足您的需要。您可以在此处建议规则(或编辑卷曲规则)https://github.com/eslint/eslint/issues。
以下 eslint 自定义规则存储库中的 switch-braces
规则似乎就是您要找的那个:
https://github.com/justinanastos/eslint-plugin-justinanastos/blob/master/docs/rules/switch-braces.md
你可以试试看。
你可以试试'no-restricted-syntax' rule with such selector.
带有详细输出(一个案例的每个非块子项都被报告为错误):
'no-restricted-syntax': ['error',
{
'selector': 'SwitchCase > *.consequent[type!="BlockStatement"]',
'message': 'Switch cases without blocks are disallowed.'
},
],
如果您的解析器支持 :has
,您可以试试这个,但它可能会产生误报:因为子(相对)选择器目前在 :has
中似乎是不允许的,后代非块 .consequent
节点可能会抛出。
'no-restricted-syntax': ['error',
{
'selector': 'SwitchCase:has(*.consequent[type!="BlockStatement"])',
'message': 'Switch cases without blocks are disallowed.'
},
],