设置解析器有正确的方法和错误的方法Prettier用于格式化您的代码。我认为回答这个问题最好的方法是参考官方的更漂亮的文档@ https://prettier.io/docs/en/configuration.html#setting-the-parserdocsenoptionshtmlparser-option“https://www.prettier.io/docs/en” https://prettier.io/docs/en/configuration.html#setting-the-parserdocsenoptionshtmlparser-option直接,所以这就是我要做的。
以下根据 Prettier.io 官方文档
“永远不要将解析器选项放在配置的顶层。仅在覆盖内使用它。否则,您将有效地禁用 Prettier 基于自动文件扩展名的解析器推断。这会强制 Prettier 使用您为所有类型的文件指定的解析器 - 即使它没有意义,比如尝试将 CSS 文件解析为 JavaScript。”
以下段落为“已编辑”@“2022 年 1 月 15 日太平洋标准时间 4:02pm”
最初我必须阅读错误消息来解释配置,因为它是作为 OP 中发布的调试日志的一部分发出的。然而,我编辑了操作,并添加了配置,作为作者.prettierrc
文件,以便问答两者都更有意义。
操作作者正在处理的问题是两个独立的问题,都与解析器相关。首先,在创建时“更漂亮的配置文件”,是否是我喜欢的类型:.prettierrc
,或其他常见格式.prettierrc.js
,或者其他什么,设置的规则是相同的。在这篇文章中,问题的作者添加了{"parser":"..."}
设置,进入顶层更漂亮的配置文件,这是不正确的。作者所做的第二件事是不正确的,这是在顶层配置解析器的直接结果,他们试图使用“TypeScript 解析器”格式化一个“JSON 文件”。由于 JSON 完全不同,因此它们会出现错误。
这是一个在 a 中正确配置解析器的示例".prettierrc"
文件看起来像。
{
"overrides": [
{
"files": ["*.mts", "*.cts", "*.ts"],
"options": {
"parser": "typescript"
}
}
]
}
上面的代码片段演示了覆盖的内容.prettierrc
配置文件看起来像是为特定的文件类型设置特定的解析器。
NOTE: 在本例中,我选择包含每种类型的 TypeScript 文件,因此可以将其视为为特定语言设置解析器。您还可以选择仅排除文件,而不提供包含列表。
同样重要的是,我们意识到上面的示例将成功配置 TypeScript 和 JSON 文件,即使没有配置任何其他格式设置。
这是一个显示完全配置的示例.prettierrc
文件。这为 TypeScript 设置了不同的解析器(Babel TS 解析器),并指定了与 JSON 一起使用的解析器。
{
"printWidth": 80,
"endOfLine": "lf",
"tabWidth": 2,
"semi": true,
"bracketSpacing": false,
"useTabs": false,
"overrides": [
{
"files": ["*.mjs", "*.cjs", "*.js"],
"options": {
"parser": "babel"
}
},
{
"files": ["*.mts", "*.cts", "*.ts"],
"options": {
"parser": "babel-ts"
}
},
{
"files": ["*.json", "*.jsonc", "*.json5"],
"options": {
"parser": "json5"
}
}
]
}
注意:上面的 prettierrc 文件是一个正确的例子;它用于 Linux 环境中的 TypeScript 配置。
如果你在 Windows 中添加“lf”行结尾,你很快就会破坏一切。重点是演示一个配置文件的工作示例,该文件更改了 prettier 使用的解析器。另外,如果你编写代码,你应该对解析器有深入的了解。如果您刚开始编写代码,这可能不是您需要跑去学习的第一件事,但解析代码是基本机制之一,它不仅使像 Prettier 这样的工具工作,而且使实际的编程语言本身工作。它们是整个计算机科学领域所固有的。无论如何,我不想偏离轨道。有几点需要记住,我将在下面列出。
需要记住的要点
-
上面的配置远不是唯一更漂亮的配置,但它是一个很好的使用参考,因为它是一个正确定义的配置文件。
-
Prettier 是一个固执己见的代码格式化程序,这意味着它经过预设以确定您的大多数代码风格。这样做的好处是,如果这个问题的作者删除了他的所有内容.prettierrc
文件,prettier 会格式化他的 JSON 文件,错误就会消失。问题是他提出来的。
-
这个 Stack Overflow 问答线程最相关的细节是,解析器很重要,如果你要为 Prettier 或其他一些软件配置它们,你应该知道你在做什么。如果您确实决定将解析器设置为非默认配置,您应该首先在工作状态下获得您正在处理的内容,因此如果您对解析器有任何问题,您可以稍后隔离这些问题以使其更容易解决最终的问题。