You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ESLint中兼顾链式方法缩进与装饰器成员对齐需求?

解决ESLint缩进规则同时兼容链式调用和装饰器对齐的问题

我懂你的痛点——既要让链式调用的成员方法保持清爽的缩进,又要让属性装饰器和对应的成员变量对齐,之前的配置顾此失彼确实闹心。

你当前的"indent": ["error", "tab", { "MemberExpression": 1 }]配置已经搞定了链式调用的缩进需求,但问题出在ESLint默认会对装饰器应用缩进检查,导致装饰器被错误缩进。要同时满足两种需求,只需要给indent规则添加忽略装饰器节点缩进检查的配置即可:

"indent": [
  "error",
  "tab",
  {
    "MemberExpression": 1,
    "ignoredNodes": ["Decorator"]
  }
]

为什么这个配置能解决问题?

  • "MemberExpression": 1 维持了你想要的链式调用缩进逻辑:类/实例后的成员方法(比如.findOne、.populate)会缩进1个tab,让链式代码的层级结构一目了然。
  • "ignoredNodes": ["Decorator"] 告诉ESLint跳过对装饰器节点的缩进检查,这样你就能让@prop()装饰器和下面的password: string;保持同一缩进级别,完全符合你的预期。

验证效果

调整配置后,你的两段示例代码都能顺利通过ESLint检查:

链式调用代码(保持正确缩进)

await PostModel
  .findOne({ author: user.user, _id: id, })
  .populate('tickets', 'title status');

装饰器代码(保持对齐)

@prop({ type: String, required: true })
password: string;

如果之后你需要对类装饰器的缩进做特殊处理,还可以细化ignoredNodes的范围(比如用"Decorator > ClassDeclaration"来忽略类装饰器,保留属性装饰器的检查),但目前这个配置已经完美解决你提到的两个需求啦。

内容的提问来源于stack exchange,提问作者user776686

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 08:47:37