vs code 未调用 prettier 格式化,主因是未将其设为默认格式化工具或语言绑定缺失;需通过 configure default formatter 设置、在 .vscode/settings.json 中配置语言块、确保扩展 id esbenp.prettier-vscode 正确安装,并验证 .prettierrc 格式与模块系统兼容。

保存时没格式化,大概率不是插件没装,而是 VS Code 根本没把 prettier 当成当前文件的格式化工具——它连调用都没触发。
为什么保存后代码没对齐?关键看状态栏语言标识
打开一个 .js 或 .ts 文件,盯住右下角状态栏。如果显示的是 ESLint、None 或干脆没标出格式器名称,说明 Prettier 没被绑定到该语言。VS Code 不会“自动接管”,必须显式声明。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入Format Document With,选Configure Default Formatter,再选Prettier - Code formatter - 更可靠的做法:在项目根目录的
.vscode/settings.json中写死语言绑定,例如:{ "[javascript]": { "editor.formatOnSave": true }, "[typescript]": { "editor.formatOnSave": true } } - 注意:
"editor.formatOnSave": true写在顶层设置里,只对部分语言生效;必须配合语言块才能覆盖所有目标文件
editor.defaultFormatter 必须设对,且插件名不能错
esbenp.prettier-vscode 是扩展 ID,不是显示名。设成 prettier、Prettier 或漏掉 -vscode 都会失败,VS Code 找不到对应提供者。
- 检查是否已安装官方扩展:搜索
Prettier - Code formatter(注意带短横线和空格),发布者是Esben Petersen - 若项目中没装
prettier包,建议运行npm install --save-dev prettier;全局安装虽可用,但版本不一致易导致行为差异 - 可加配置项
"prettier.prettierPath": "./node_modules/prettier"显式指定路径,避免 CLI 查找失败
.prettierrc 文件语法错误会导致静默失效
VS Code 读取 .prettierrc 时,遇到 JSON 语法错误(比如末尾多逗号)、或 ESM 配置文件里用了 module.exports = 却在纯 ESM 项目中,Prettier 会直接跳过该配置,回退到默认规则——你改了配置却看不到效果,就是这个原因。
- 推荐用
.prettierrc.json,内容保持标准 JSON 格式,例如:{ "semi": true, "singleQuote": true, "tabWidth": 2, "printWidth": 80 } - 如需动态逻辑(比如根据文件类型切换规则),用
prettier.config.js并确保导出方式匹配项目模块系统:export default { ... }(ESM)或module.exports = { ... }(CommonJS) - 启用
"prettier.requireConfig": true可强制只在有配置文件时才格式化,避免误用默认值
Vue / TypeScript 等场景容易漏掉语言支持
Prettier 对 .vue 文件的 <script setup></script> 块、或 .ts 中的类型缩进,默认行为可能不符合预期,尤其旧版本 Prettier(
- 确认 Prettier 版本 ≥ 2.8.0:
npx prettier --version - 为 Vue 显式开启支持:在
.vscode/settings.json中添加"[vue]": { "editor.formatOnSave": true } - TypeScript 缩进依赖具体配置项,比如
"semi": false和"bracketSpacing": true要明确写出,否则可能沿用 VS Code 内置逻辑
最常被忽略的其实是语言绑定层级:你改了全局设置,但项目里 .vscode/settings.json 或 .prettierrc 任一环节出错,格式化就会断在半路。不要假设“装了就生效”,每个环节都得亲手确认。











