【问题标题】:Prettier reformats if / else into single line更漂亮的将 if / else 重新格式化为单行
【发布时间】:2019-12-15 15:31:15
【问题描述】:

我正在一个使用 React 和 Typescript 的项目中尝试 Prettier。但是我在配置多行 i​​f / 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 变得更糟(不再维护插件等)。

标签: reactjs typescript visual-studio-code tslint prettier


【解决方案1】:

在项目中将 Prettier 与 linter 结合使用时:

  • Prettier 将处理所有格式规则
  • 代码质量规则将由 linter(例如 tslint)处理

更改 tslint 的配置进行格式化不会影响 prettier 的输出。
Prettier vs Linters

事实上,如果您不注意如何配置 tslint,最终可能会导致规则冲突。这就是为什么存在像 tslint-config-prettier 这样的包的原因。

Prettier 的配置选项很少,因为它是一种自以为是的格式化程序,如其Option Philosophy 中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 2020-04-28
    • 2015-07-24
    • 2020-07-26
    • 2013-02-22
    • 2020-11-02
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多