使用 Eslint 防止多行对象的所有属性都在一行上?

问题描述 投票:0回答:1

使用 Eslint,我希望允许整个对象位于 1 行上,或者允许大括号 + 每个属性位于单独的行上,即:

{ a: 1, b: 2 };

{
  a: 1,
  b: 2,
};

但是,Eslint 的自动修复正在生成并允许这样做:

{
  a: 1, b: 2,
};

有规则可以防止这种情况发生吗?

我使用的相关规则是:

'object-curly-newline': [2, {
  minProperties: 4,
  consistent: true,
}],
'object-property-newline': [2, { allowAllPropertiesOnSameLine: true }],
javascript eslint
1个回答
0
投票

您必须从

allowAllPropertiesOnSameLine: true
中删除
object-property-newline
才能实现您的目标。

据我所知,此规则(

object-property-newline
)没有任何附加选项来设置应执行换行的对象中属性的最小数量,但默认情况下,此规则有条件地应用最小数量的换行符。 “2个属性”。也就是说,如果对象只有 1 个属性,则不应用该规则,但如果属性数量较多,则应用该规则。

{
  "object-curly-newline": ["error", {
    minProperties: 4,
    consistent: true,
  }],
  "object-property-newline": "error"
}

错误代码示例:

const a = {a: 1, b: 2}

const b = {a: 1}

正确代码示例:

const a = {
  a: 1,
  b: 2
}

const b = {a: 1}
© www.soinside.com 2019 - 2024. All rights reserved.