5月27日 22:07
Prettier 支持哪些配置文件格式?
答案
Prettier 支持以下配置文件格式,按查找优先级从高到低排列:
| 优先级 | 文件名 | 格式 |
|---|---|---|
| 1 | package.json 中 prettier 字段 | JSON |
| 2 | .prettierrc | JSON/YAML |
| 3 | .prettierrc.json | JSON |
| 4 | .prettierrc.json5 | JSON5 |
| 5 | .prettierrc.yml / .prettierrc.yaml | YAML |
| 6 | .prettierrc.toml | TOML |
| 7 | .prettierrc.js / .prettierrc.mjs | JS(ESM) |
| 8 | .prettierrc.cjs | JS(CJS) |
| 9 | prettier.config.js / prettier.config.mjs | JS(ESM) |
| 10 | prettier.config.cjs | JS(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,排除不需要格式化的文件:
shellnode_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.json 的 prettier 字段容易被忽略,且该文件本身体积大、职责多,配置混在一起不利于维护和代码审查。