使用 Prettier JS 时保留 then() catch() 格式

Posted

技术标签:

【中文标题】使用 Prettier JS 时保留 then() catch() 格式【英文标题】:Preserve then() catch() format when using Prettier JS 【发布时间】:2017-12-23 16:39:27 【问题描述】:

我刚开始使用 VSCode 的 PrettierJS 插件,我正在寻找一种方法来保留我的服务调用(以及后续 Promise)的代码格式。

我知道您可以在代码块之前添加 //prettier-ignore cmets 以保留代码模式,但由于我在整个应用程序中都这样做,我不想在任何地方添加该注释行。

现在,我的代码块如下所示:

       return this.thingService.addThing(newThing)
            .then(wonFunction)
            .catch(lostFunction);

但是当我执行 Prettier 格式命令时,我得到了这个:

    return this.accessData.addRight(newRight).then(wonAddAccessRight).catch(lostAddAccessRight);

我想要一种方法来防止我的代码块在不使用 //prettier-ignore cmets 的情况下发生更改。

【问题讨论】:

【参考方案1】:

Prettier 现在会自动在单独的行中断开 3 个或更多函数的链(我正在编写的当前版本是 1.9.1),因此格式与 OP 要求的有点不同:

return this.accessData
  .addRight(newRight)
  .then(wonAddAccessRight)
  .catch(lostAddAccessRight);

但是如果你想在只有 2 个函数的情况下强制它中断,有一个技巧是添加评论,Prettier 会自动中断它:

return promise // force break
  .then(didResolve)
  .catch(didReject);

【讨论】:

fugly,为什么它不是官方修复而不是我想知道的评论黑客

以上是关于使用 Prettier JS 时保留 then() catch() 格式的主要内容,如果未能解决你的问题,请参考以下文章

在 then 回调中使用 await - 保留关键字“await”

prettier保存代码时自动格式化

ij里面怎么添加prettier插件

prettier 函数function 后面空格移除,.prettierrc与.eslintrc.js冲突

使用 ESLint 或 Prettier 为 JS 开关案例实施花括号

prettier.config.js