Prettier/Eslint 在括号后维护换行符

Posted

技术标签:

【中文标题】Prettier/Eslint 在括号后维护换行符【英文标题】:Prettier/Eslint maintain newline after bracket 【发布时间】:2018-10-29 04:30:00 【问题描述】:

我最近研究过使用Prettier 来帮助保持一致的代码结构。我找到了Prettier VSCode plugin,发现它还可以选择使用Prettier-eslint。在大多数情况下,它很棒,但是 Prettier 做的一件事真的让我抓狂。

假设我在 React 组件的 render 函数中有这个:

return (
    <button
        onClick=
            (e) => console.log('Hello, world!');
        
    >
        Click Me
    </button>
);

这正是我希望代码被格式化的方式,但 Prettier 不断把它变成这样:

return (
    <button
        onClick=(e) => 
            console.log('Hello, world!');
        
    >
        Click Me
    </button>
);

因此,它删除了左括号之后和右括号之前的换行符。

是否有关闭此功能的选项,或者我可以使用某种插件(对于 Prettier 和/或 Eslint)?我四处搜寻,但找不到完全涵盖此内容的任何内容。

谢谢!

【问题讨论】:

这可能是因为 prettier 更喜欢箭头函数体是多行块。不带括号的(e) =&gt; console.log('Hello, world!'); 是否也会发生这种情况? 不,而是把它变成这样:return &lt;button onClick=(e) =&gt; console.log('Hello, world!')&gt;Click Me&lt;/button&gt;; 【参考方案1】:

您可能不会喜欢这个问题的答案。这是 Prettier 旨在阻止的事情类型,自定义代码样式。它不是故意定制的。

“到目前为止,采用 Prettier 的最大原因是停止所有关于样式的持续争论。”

https://prettier.io/docs/en/option-philosophy.html

以下是所有可用选项的列表:https://prettier.io/docs/en/options.html

Prettier 似乎是现在的行业标准,带来 JS 开发

【讨论】:

以上是关于Prettier/Eslint 在括号后维护换行符的主要内容,如果未能解决你的问题,请参考以下文章

json [ESLint + Prettier] #eslint #prettier

将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”

text VSCode设置+ Prettier + Eslint集成

使用 Prettier Eslint 时找不到模块“@typescript-eslint/parser”

仅为 TS/TSX 文件删除 CR - VSCode 1.46 上的 Prettier ESLint

5分钟带你看懂 prettier + eslint 搭配(vscode)