如何通过ESLint强制语句换行,禁止内联连续语句?
实现禁止内联连续语句的ESLint配置方案
当然可以实现你的需求!你要禁止的是类似}if (这种无分隔的内联连续语句写法,同时强制规范的空格/换行分隔,我们可以通过调整现有ESLint规则来达成目标,具体分两种场景配置:
1. 强制块闭合后与下一个语句之间有空格(解决同一行无分隔问题)
首先添加space-after-blocks规则,它会确保当代码块的闭合大括号}后面紧接着其他语句(比如下一个if)时,必须有一个空格分隔,避免出现}if (这种紧凑写法。
在你的rules配置中加入:
"space-after-blocks": ["warn", "always"]
配置后,错误写法里的}if (会被检测为警告,必须修改为} if (。
2. 强制连续控制语句之间换行(更严格的换行规范)
如果你希望更进一步,强制if、for这类控制语句不能写在同一行,必须换行分隔(甚至可以要求空白行),可以扩展你已经在用的padding-line-between-statements规则,添加针对控制语句的配置项。
修改现有的padding-line-between-statements数组,加入以下规则:
{ "blankLine": "always", "prev": ["if", "for", "while", "do", "switch"], "next": ["if", "for", "while", "do", "switch"] }
完整的padding-line-between-statements配置会变成:
"padding-line-between-statements": [ "warn", { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*"}, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, { "blankLine": "always", "prev": ["if", "for", "while", "do", "switch"], "next": ["if", "for", "while", "do", "switch"]} ]
这个配置会要求连续的控制语句(比如两个if)之间必须有至少一个空白行,强制它们分开写在不同行,符合更清晰的代码风格。
最终整合后的规则片段
把这两个规则加入你的现有配置后,相关部分会是这样:
"rules": { // ... 你已有的其他规则 ... "space-after-blocks": ["warn", "always"], "padding-line-between-statements": [ "warn", { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*"}, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, { "blankLine": "always", "prev": ["if", "for", "while", "do", "switch"], "next": ["if", "for", "while", "do", "switch"]} ], // ... 你已有的其他规则 ... }
这样就能完全满足你的需求:既禁止了无分隔的内联连续语句,又能强制规范的换行/空格分隔写法。
内容的提问来源于stack exchange,提问作者jon
相关产品推荐
相关产品推荐

