prettier保存即格式化需三者对齐:插件、本地prettier包、默认格式化器;快捷键失效因缺失任一环节;eslint与prettier冲突须禁用eslint格式功能并引入eslint-config-prettier。

保存即对齐,不需要手动调格式——但前提是 Prettier 插件、本地依赖、默认格式化器三者都配对了,缺一不可。
VS Code 里按 Shift+Alt+F 没反应?先检查这三件事
快捷键失效不是插件坏了,而是 VS Code 找不到能干活的格式化工具:
- 只装了
Prettier - Code formatter插件,但项目里没装prettier包(插件只是“遥控器”,真正干活的是你node_modules里的prettier) -
editor.defaultFormatter没设对,比如设成了dbaeumer.vscode-eslint,结果 ESLint 不负责格式化,就卡住 - 文件语言模式不对:右下角显示的是
Plain Text或JavaScript React而非JavaScript,Prettier 不会触发
验证方式:按 Ctrl+Shift+P → 输入 Format Document With → 看弹出列表里有没有 Prettier。没有就说明上面某一步断了。
为什么保存后代码“越整越乱”?大概率是 ESLint 和 Prettier 在打架
ESLint 默认自带 semi、quotes、comma-dangle 这类格式规则,和 Prettier 的输出直接冲突。表现就是:保存一次,分号被加;再保存一次,又被删掉。
- 必须在 ESLint 配置中
extendeslint-config-prettier(它专门关掉所有格式类规则) - VS Code 设置里显式关掉 ESLint 的格式能力:
"eslint.format.enable": false - 别在
.eslintrc里再写"semi": "error"这种规则,Prettier 已经管了
顺带一提:eslint-config-prettier 不是插件,是 npm 包,得 npm install --save-dev eslint-config-prettier 装进项目里。
.prettierrc 配置里这几个字段最影响“看起来整齐”
很多人以为缩进对齐只靠 tabWidth,其实关键在换行策略和敏感度:
-
"printWidth": 80:超长就折行,但太小会导致 JSX 属性每行一个,太大又难读,建议 80–100 之间 -
"htmlWhitespaceSensitivity": "css":HTML 中空白字符是否影响渲染,设为css才能让标签内文本缩进不被吃掉 -
"trailingComma": "es5":对象/数组末尾加逗号,让 Git diff 更干净,也方便后续加新属性 -
"bracketSpacing": true:对象大括号里加空格,{ key: value }比{key: value}更易读
注意:.prettierrc 必须放在项目根目录,且 VS Code 只认这个路径下的配置——放错位置等于没写。
大文件保存卡顿、格式化超时?别硬扛,加个 timeout 就行
超过 1000 行的 JS 或 HTML 文件,Prettier 分析 AST 会明显变慢,VS Code 默认 750ms 超时就放弃,结果就是保存后没反应。
- 在项目根目录的
.vscode/settings.json里加一行:"editor.formatOnSaveTimeout": 5000 - 别全局设置这个值,只在需要的大项目里加,避免拖慢日常小文件
- 如果仍卡,可临时把
editor.formatOnSaveMode改成modifications,只格式化你改过的行
真正容易被忽略的是:Prettier 的性能瓶颈不在插件本身,而在你项目里 node_modules 的体积和磁盘 I/O。用 pnpm 或 yarn v4+ 时,记得配好 "prettier.prettierPath" 指向本地 prettier/index.cjs,否则插件可能去全局找,路径错就直接报 Failed to load module 'prettier'。











