5月27日 22:07

Prettier 支持哪些配置文件格式?

答案

Prettier 支持以下配置文件格式,按查找优先级从高到低排列:

优先级文件名格式
1package.jsonprettier 字段JSON
2.prettierrcJSON/YAML
3.prettierrc.jsonJSON
4.prettierrc.json5JSON5
5.prettierrc.yml / .prettierrc.yamlYAML
6.prettierrc.tomlTOML
7.prettierrc.js / .prettierrc.mjsJS(ESM)
8.prettierrc.cjsJS(CJS)
9prettier.config.js / prettier.config.mjsJS(ESM)
10prettier.config.cjsJS(CJS)

Prettier 3.5+ 还支持 .prettierrc.ts / prettier.config.ts(TypeScript 格式),适合 TS 项目直接复用类型。

选哪个? 小项目用 .prettierrc.json,简洁无歧义,编辑器能做 JSON Schema 校验;需要注释或动态逻辑时用 .prettierrc.js;TS 项目可考虑 .prettierrc.ts

json
// .prettierrc.json — 最常用 { "printWidth": 80, "tabWidth": 2, "semi": true, "singleQuote": true, "trailingComma": "es5", "endOfLine": "lf" }
javascript
// .prettierrc.js — 需要注释时 module.exports = { printWidth: 80, // 每行最大字符数 tabWidth: 2, // 缩进空格数 semi: true, // 行尾分号 singleQuote: true, // 单引号 trailingComma: "es5", endOfLine: "lf", };

配置解析机制

Prettier 从被格式化文件所在目录开始向上搜索配置文件,直到项目根目录,不支持全局配置,确保不同机器行为一致。如果同时存在 .editorconfig,Prettier 会将其作为基础配置,但 .prettierrc 中的选项优先。

overrides 按文件类型定制

json
{ "semi": true, "overrides": [ { "files": ["*.md", "*.json"], "options": { "tabWidth": 4 } } ] }

.prettierignore

类似 .gitignore,排除不需要格式化的文件:

shell
node_modules dist *.min.js

追问

Q: .prettierrc 和 .prettierrc.json 有什么区别? 没有本质区别。.prettierrc 优先级更高,Prettier 会先尝试按 JSON 解析,失败则尝试 YAML。.prettierrc.json 只按 JSON 解析,语义更明确,编辑器也能做 schema 校验。

Q: Prettier 配置和 ESLint 冲突怎么办? 安装 eslint-config-prettier 关闭 ESLint 中与 Prettier 冲突的规则即可。不要两边重复定义同一规则。

Q: 为什么不推荐在 package.json 中配置? package.jsonprettier 字段容易被忽略,且该文件本身体积大、职责多,配置混在一起不利于维护和代码审查。

标签:Prettier