如何避免 VsCode Prettier 在新行中破坏链函数。?

How to avoid VsCode Prettier to break chain functions in new lines.?

我正在使用 VSCode、Prettier 和 TSLint。

当我确实有超过 2 个调用的链式函数调用时

let m = moment().startOf("day").subtract(30, "days");

Prettier 闯入

let m = moment()
    .startOf("day")
    .subtract(30, "days")

我已经设置了 TSLint 规则

{
  "defaultSeverity": "warning",
  "extends": ["tslint:recommended"],
  "linterOptions": {
    "exclude": ["node_modules/**"]
  },
  "rules": {
    // ...
    "newline-per-chained-call": false
  }
}

和休闲设置

"prettier.tslintIntegration": true

但是链式函数仍然会换行。

如何避免换行但仍然使用 TSLint?

[编辑] 在 Prettier v2.0.4 中,此问题已修复。更新到最新版本

这是一个issue in prettier。据我所知,添加此功能的 PR 尚未合并。

目前为了得到你想要的,我可以建议的是使用 // prettier-ignore 注释忽略抽象语法树中的下一个节点进行格式化。

// prettier-ignore  
let m = moment().startOf("day").subtract(30, "days");   

这些忽略语句有多种变体,比如可以在 ranger 中忽略,甚至可以忽略特定文件。请查看 official prettier documentations 以了解更多它的实现。

请注意,在 Prettier v2.0.4 中,此问题已得到修复。现在,只要你的代码行在你的配置中指定的长度或默认的 80 以内,它就会留在一行中。否则会换行。

我必须升级我的 prettier 才能使这些更改生效。

$ yarn upgrade -g prettier --latest