prettier未触发需检查右下角状态栏是否显示“prettier”,并手动设置默认格式化器为esbenp.prettier-vscode;同时需在项目级.vscode/settings.json中配置语言专属formatonsave,确保.prettierrc位于项目根目录且格式正确,并协调eslint与prettier分工。

保存时没触发Prettier?先看右下角状态栏是否显示“Prettier”
VSCode 不会自动把 Prettier 绑定到文件类型上,即使插件已安装、配置文件也存在。打开一个 .js 或 .ts 文件,盯住右下角状态栏——如果显示的是 ESLint、None 或空白,说明 Prettier 根本没被调用,保存自然没反应。
解决方法只有两个动作:
• 按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),输入 Format Document With,选 Configure Default Formatter,再选 esbenp.prettier-vscode
• 或直接点右下角格式化器图标,手动切换为 Prettier
注意:esbenp.prettier-vscode 是扩展 ID,写成 prettier、Prettier - Code formatter 或漏掉 -vscode 都会失败,VSCode 找不到提供者。
editor.formatOnSave 开了但只对部分语言生效?必须配语言块
全局设置 "editor.formatOnSave": true 只是总开关,真正决定“哪个文件在保存时被格式化”的,是语言专属配置。比如 JS/TS/Vue 文件默认不继承该设置,除非你显式声明。
- 在项目根目录的
.vscode/settings.json中写: "[javascript]": { "editor.formatOnSave": true }"[typescript]": { "editor.formatOnSave": true }"[vue]": { "editor.formatOnSave": true }
别把配置写在用户级 settings.json 里——如果项目里有 .vscode/settings.json,它会覆盖用户设置,导致你改了半天却没效果。改完记得重启 VSCode 窗口,否则新配置不加载。
.prettierrc 文件放错位置或格式错误,Prettier 就退回默认规则
Prettier 插件只认项目根目录(即你执行 code . 打开的文件夹)下的 .prettierrc、.prettierrc.json 或 prettier.config.js。放在 src/ 或 config/ 里等于没写。
常见坑:
-
.prettierrc必须是标准 JSON(.prettierrc.json更安全),.prettierrc.js需导出对象,.prettierrc.cjs要用module.exports - 没配文件时,Prettier 用内置默认值:
tabWidth: 2、semi: true、singleQuote: false,和团队规范常冲突 -
tabWidth设为4,但 VSCode 的editor.tabSize还是2,编辑器缩进和格式化结果就会打架
和 ESLint 一起用时保存没反应?大概率是两者抢着格式化
ESLint 和 Prettier 同时启用 autoFixOnSave 或 formatOnSave,会导致行为不可预测:要么跳过、要么报错、要么只执行一半。
推荐做法:
- 关掉 ESLint 的自动修复:
"eslint.autoFixOnSave": false - 开启 ESLint 的格式能力:
"eslint.format.enable": true,并确保eslint-config-prettier已安装且排在 ESLint 配置最后 - 让 Prettier 负责格式,ESLint 负责校验——这才是分工清晰的协作方式
Vue 单文件组件里的 <script></script> 块,如果没配 "[vue]" 块,Prettier 默认不处理,这点容易被忽略。











