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

Posted

技术标签:

【中文标题】如何避免 VsCode Prettier 在新行中破坏链函数。?【英文标题】:How to avoid VsCode Prettier to break chain functions in new lines.? 【发布时间】:2019-06-13 19:39:09 【问题描述】:

我正在使用 VSCode、Prettier 和 TSLint。

当我确实有超过 2 个调用的链接函数调用时,例如

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

更漂亮的闯入

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?

【问题讨论】:

【参考方案1】:

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

这是issue in prettier。据我了解,添加此功能的 PR 尚未合并。

目前为了得到你想要的,我可以建议使用// prettier-ignore cmets 来忽略抽象语法树中的下一个节点。

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

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

【讨论】:

【参考方案2】:

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

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

$ yarn upgrade -g prettier --latest

【讨论】:

以上是关于如何避免 VsCode Prettier 在新行中破坏链函数。?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 VsCode Prettier 用箭头函数破坏链函数?

强制 Prettier 将内部文本放在新行上,不带尾随 >

如何在使用 prettier 的类中的方法声明前后添加新行?

在 Prettier 中,如何防止 HTML 结束标记的“>”字符被放置在新行上?

如何配置VSCode中的Prettier和ESLint标准

Prettier.js 关于换行格式的方法参数