vs code中prettier“装了没反应”的主因是格式化链断裂:开关被工作区配置覆盖、语言未绑定prettier为默认格式器、配置文件位置或语法错误致静默失效。

VS Code 里 Prettier 插件“装了却没反应”,90% 是格式化链断在三个地方:开关没真开、语言没绑对、配置文件静默失败。
editor.formatOnSave 明明开了,但保存还是不格式化
这个设置必须为 true,且不能被工作区或语言专属配置覆盖。很多人只在全局设了,结果项目根目录下的 .vscode/settings.json 里写了 "[javascript]": { "editor.formatOnSave": false },直接屏蔽所有 JS 文件的自动格式化。
- 用
Ctrl+Shift+P→Preferences: Open Workspace Settings (JSON)检查工作区配置,确认没有显式关掉formatOnSave - 如果只想对某类文件启用,必须写成语言专属形式:
"[typescript]": { "editor.formatOnSave": true },而不是笼统设全局 - 右下角状态栏留意当前语言模式(比如显示的是
Plain Text而非JavaScript),模式不对,formatOnSave就不触发
右键“Format Document With…” 里没有 Prettier 选项
VS Code 不会自动把刚装的 Prettier 当作格式化工具。它默认用 vscode.typescript-language-features 处理 TS/JS,压根不会调用 Prettier,除非你明确告诉它:“这个语言归 Prettier 管”。
- 打开设置(
Ctrl+,),搜default formatter,展开JavaScript › Default Formatter和TypeScript › Default Formatter,下拉选esbenp.prettier-vscode(注意拼写,不能是prettier或prettier-vscode) - HTML、Vue、MDX 等需额外处理:它们不走标准语言 ID,得在
settings.json里手动加语言块,例如"[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } - 插件图标是灰色的?说明没激活——点右下角语言模式(如
Plain Text),手动切到JavaScript或新建一个.js文件再试
.prettierrc 或 prettier.config.js 语法错误导致静默退出
Prettier 遇到配置文件解析失败时,不会报错,而是直接放弃加载规则,退回到“什么都不做”的状态——看起来就像“失效”,其实它连规则都没读进去。
- 检查文件是否放在项目根目录(不是
src/或config/子目录) - 常见错误包括:
.prettierrc.yml拼错成.prettierrc.yaml,或prettier.config.js中导出语法错误(比如少个module.exports = { ... }包裹) - 空配置文件(如仅
{})会触发 Prettier 默认规则(semi: true,singleQuote: false),若团队习惯单引号 + 无分号,视觉上就“像没生效”
命令行能格式化,但 VS Code 里不行
说明问题出在编辑器集成层,不是 Prettier 本身坏了。这时候要重点排查干扰源。
- 临时禁用其他格式化类插件(如
ESLint、Beautify、stylelint),再测试保存行为 - 运行
Developer: Toggle Developer Tools,切到 Console 标签页,刷新窗口,看是否有Activating extension 'esbenp.prettier-vscode' failed报错 - 检查
prettier.path设置是否指向有效的本地 Prettier 可执行文件(尤其当你本地安装了prettier包时)
最常被忽略的点是:语言模式匹配和配置文件位置。VS Code 的格式化行为极度依赖当前文件的语言 ID,而 Prettier 的配置加载只认项目根目录下的合法命名文件——这两处一错,整个流程就卡死,且不提示。











