【问题标题】:eslint enforce space after the single-line-if parentheseseslint 在单行 if 括号后强制使用空格
【发布时间】:2021-08-02 09:10:10
【问题描述】:

我对 ESLint 很陌生,我找不到符合我要求的规则。考虑以下代码:

if(someCondition)i++;

我想在括号后强制一个空格,这样我们应该有以下内容:

if(someCondition) i++;

但是我根本找不到这样的规则;它不是space-before-function-paren(显然)、keyword-spacing(仅影响if 之后的间距)或space-before-blocks(因为这是单行if,所以没有块)。请帮忙。谢谢!

附:同样的规则也应该适用于单行while。

【问题讨论】:

  • 听起来像是一个功能请求。您在寻找什么类型的答案?
  • 任何可以实现我描述的东西,包括自定义规则(如果可能的话)。

标签: eslint eslintrc typescript-eslint


【解决方案1】:

https://github.com/eslint/eslint/discussions/15267#discussioncomment-1597748

我认为我们的核心没有这条规则。

keyword-spacing 可以禁止if (foo)return;space-before-blocks 可以禁止if (foo){,但似乎没有规则会禁止(foo)bar; 并强制执行if (foo) bar;

【讨论】:

  • 是的,我认为这实际上是非常需要的。
  • @Mu-TsunTsai 同意。
【解决方案2】:

简单但有效:

$ cat input 
  if (condition)i++;
  if (condition)i--
  
  while ( this ^ foo || bar )continue
  for (true ||
         true )z--

简单的解决方案,但可能还可以。

$ cat input | busybox sed -e 's/)\([a-zA-Z_]\)/) \1/'
if (condition) i++;
if (condition) i--

while ( this ^ foo || bar ) continue
for (true ||
       true ) z--

这将在 ) 和变量名的第一个字母 (a-z_) 之间放置一个空格。

请考虑我在此处(和其他人)的回答,以获取有关如何处理包含不需要的模式的所有文件的提示:

【讨论】:

  • 这是一个 eslint 问题。您的答案与此有何关联?
  • 查看评论:“任何可以实现我所描述的东西,”
  • 首先,有很多情况你的正则表达式没有覆盖。其次,也是最重要的,我在问题的标题中明确指出“eslint 强制空间”。所以不,你的回答与我所描述的无关。
  • 那我们对任何事物都有不同的定义。
猜你喜欢
  • 2021-12-19
  • 2019-11-27
  • 1970-01-01
  • 2016-01-01
  • 2019-03-20
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多