更漂亮的将 if / else 重新格式化为单行
Posted
技术标签:
【中文标题】更漂亮的将 if / else 重新格式化为单行【英文标题】:Prettier reformats if / else into single line 【发布时间】:2019-12-15 15:31:15 【问题描述】:我正在一个使用 React 和 Typescript 的项目中尝试 Prettier。但是我在配置多行 if / else 语句时遇到问题。
当我写作时:
if (x >=0)
// Do something
else
// Do something else
Prettier 将其重新格式化为:
if (x >=0)
// Do something
else
// Do something else
我将此规则添加到我的 tslint 文件中:"one-line": false
,但 Prettier 仍在格式化我的语句。
这是 Prettier 的核心规则,无法通过 tslint 配置更改还是我做错了什么?
我的 tslint.json 是:
"extends": [
"tslint:recommended",
"tslint-react",
"tslint-config-prettier"
],
"rules":
"prettier": true,
"interface-name": false,
"no-console": [
true,
"log",
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"one-line": false
,
"rulesDirectory": [
"tslint-plugin-prettier"
]
我的 .prettierrc 文件是:
"trailingComma": "es5",
"printWidth": 80,
"semi": true,
"tslintIntegration": true,
"eslintIntegration": true,
"jsxSingleQuote": true,
"singleQuote": true
【问题讨论】:
Prettier 是一个固执己见的格式器,这意味着它不是可定制的,它旨在解决团队内部关于格式的无休止争论。 如果你想要更多的灵活性,除了它所防止的所有常见错误之外,ESLint 还可以自己创造奇迹! 我明白你的意思。我只是想,既然 Prettier 说单行错误来自tslint
,我可以更改它的配置并让它消失。
我同意。这很烦人!
@KonradViltersten 我同意! 耸耸肩 最后,不得不同时处理不同的项目,我认为管理我的期望比维护每个项目的繁重配置更容易,所以我屈服于 Prettier。我们仍然使用 ESLint,但格式留给 Prettier。此外,在我多年来使用的不同 IDE 中,ESLint 与 Prettier 的自动格式化集成参差不齐,而且 ESLint 变得更糟(不再维护插件等)。
【参考方案1】:
在项目中将 Prettier 与 linter 结合使用时:
Prettier 将处理所有格式规则 代码质量规则将由 linter(例如 tslint)处理更改 tslint 的配置进行格式化不会影响 prettier 的输出。 见Prettier vs Linters。
事实上,如果您不注意如何配置 tslint,最终可能会导致规则冲突。这就是为什么存在像 tslint-config-prettier 这样的包的原因。
Prettier 的配置选项很少,因为它是一种自以为是的格式化程序,如其Option Philosophy 中所述。
【讨论】:
以上是关于更漂亮的将 if / else 重新格式化为单行的主要内容,如果未能解决你的问题,请参考以下文章