跳至主内容区

配置文件

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

你可以通过以下方式配置 Prettier(优先级由高到低):

  • package.jsonpackage.yaml 文件中添加 "prettier" 字段

  • 使用 JSON 或 YAML 格式编写的 .prettierrc 文件

  • .prettierrc.json.prettierrc.yml.prettierrc.yaml.prettierrc.json5 文件

  • 使用 export defaultmodule.exports 导出配置对象的 .prettierrc.jsprettier.config.js.prettierrc.tsprettier.config.ts 文件(具体取决于 package.json 中的 type 值)

  • 使用 export default 导出配置对象的 .prettierrc.mjsprettier.config.mjs.prettierrc.mtsprettier.config.mts 文件

  • 使用 module.exports 导出配置对象的 .prettierrc.cjsprettier.config.cjs.prettierrc.ctsprettier.config.cts 文件

  • .prettierrc.toml 文件

信息

使用 TypeScript 配置文件需要额外设置

配置文件解析从待格式化文件所在位置开始,向上遍历文件目录树直到找到(或未找到)配置文件

Prettier 有意不支持任何全局配置,这是为了确保项目复制到其他计算机时 Prettier 的行为保持一致。否则 Prettier 将无法保证团队所有成员获得相同的格式化结果

配置文件中可使用的选项与 API 选项 相同

TypeScript 配置文件

使用 TypeScript 配置文件需要 Node.js>=22.6.0,在 Node.js v24.3.0 之前版本需添加 --experimental-strip-types 参数运行 Node.js

node --experimental-strip-types node_modules/prettier/bin/prettier.cjs . --write

或者

NODE_OPTIONS="--experimental-strip-types" prettier . --write

基础配置

JSON:

.prettierrc.json or .prettierrc
{
"trailingComma": "es5",
"tabWidth": 4,
"semi": false,
"singleQuote": true
}

JS (ES 模块):

prettier.config.mjs, .prettierrc.mjs, prettier.config.js, or .prettierrc.js
/**
* @see https://prettier.io/docs/configuration
* @type {import("prettier").Config}
*/
const config = {
trailingComma: "es5",
tabWidth: 4,
semi: false,
singleQuote: true,
};

export default config;

JS (CommonJS):

prettier.config.cjs, .prettierrc.cjs, prettier.config.js, or .prettierrc.js
/**
* @see https://prettier.io/docs/configuration
* @type {import("prettier").Config}
*/
const config = {
trailingComma: "es5",
tabWidth: 4,
semi: false,
singleQuote: true,
};

module.exports = config;

TypeScript (ES 模块):

prettier.config.mts, .prettierrc.mts, prettier.config.ts, or .prettierrc.ts
import { type Config } from "prettier";

const config: Config = {
trailingComma: "none",
};

export default config;

TypeScript (CommonJS):

prettier.config.cts, .prettierrc.cts, prettier.config.ts, or .prettierrc.ts
import { type Config } from "prettier";

const config: Config = {
trailingComma: "none",
};

module.exports = config;

YAML:

.prettierrc, .prettierrc.yml, or .prettierrc.yaml
trailingComma: "es5"
tabWidth: 4
semi: false
singleQuote: true

TOML:

.prettierrc.toml
trailingComma = "es5"
tabWidth = 4
semi = false
singleQuote = true

配置覆盖规则

覆盖规则允许你为特定文件扩展名、文件夹和特定文件设置不同的配置

JSON:

.prettierrc
{
"semi": false,
"overrides": [
{
"files": "*.test.js",
"options": {
"semi": true
}
},
{
"files": ["*.html", "legacy/**/*.js"],
"options": {
"tabWidth": 4
}
}
]
}

YAML:

.prettierrc
semi: false
overrides:
- files: "*.test.js"
options:
semi: true
- files:
- "*.html"
- "legacy/**/*.js"
options:
tabWidth: 4

每个覆盖规则必须包含 files 字段(可以是字符串或字符串数组)。可选添加 excludeFiles 字段来排除特定文件(同样支持字符串或字符串数组)

设置 parser 选项

默认情况下,Prettier 会根据输入文件扩展名自动推断使用的解析器。结合 overrides 功能,你可以教会 Prettier 如何解析它无法识别的文件

例如,要让 Prettier 格式化自身的 .prettierrc 文件,可以这样配置:

.prettierrc
{
"overrides": [
{
"files": ".prettierrc",
"options": { "parser": "json" }
}
]
}

你也可以为 .js 文件改用 flow 解析器(替代默认的 babel 解析器):

.prettierrc
{
"overrides": [
{
"files": "*.js",
"options": {
"parser": "flow"
}
}
]
}

注意: 绝对不要将 parser 选项放在配置文件的顶层。仅可在 overrides 内部使用该选项。否则你将完全禁用 Prettier 基于文件扩展名的自动解析器推断功能。这将强制 Prettier 对所有文件类型使用你指定的解析器——即使这毫无意义,例如尝试将 CSS 文件解析为 JavaScript。

配置模式

如需 JSON 模式验证配置,可在此处获取:https://www.schemastore.org/prettierrc.json

EditorConfig

如果项目中存在 .editorconfig 文件,Prettier 会解析该文件并将其属性转换为对应的 Prettier 配置。这些配置会被 .prettierrc 等文件覆盖。

备注

与 EditorConfig 规范不同,.editorconfig 文件的搜索会在项目根目录停止,不会继续向上级目录查找。

以下是对不同属性如何映射到 Prettier 行为的注释说明:

.editorconfig
# Stop the editor from looking for .editorconfig files in the parent directories
# root = true

[*]
# Non-configurable Prettier behaviors
charset = utf-8
insert_final_newline = true
# Caveat: Prettier won’t trim trailing whitespace inside template strings, but your editor might.
# trim_trailing_whitespace = true

# Configurable Prettier behaviors
# (change these if your Prettier config differs)
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80

以下是一个可直接复制粘贴的 .editorconfig 文件(如果你使用默认选项):

.editorconfig
[*]
charset = utf-8
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80