prettier 默认使用双引号,必须通过项目级配置 singlequote: true 显式覆盖;vscode 的 prettier.singlequote 设置自2022年起已完全失效,仅 .prettierrc 或 prettier.config.js 等项目根目录配置文件生效,且需重启 vscode 刷新缓存。

Prettier 默认强制双引号,和 Vue 项目要求单引号冲突时,必须通过 singleQuote: true 显式覆盖,VSCode 设置项 prettier.singleQuote 在 2026 年已完全失效。
为什么改了 VSCode 设置没用
Prettier 自 2022 年起就不再读取 VSCode 的 UI 或 settings.json 中的 prettier.singleQuote 配置——它只认项目级配置文件。你看到右下角有 Prettier 图标、按 Ctrl+Shift+P → Format Document With 显示 Prettier 为默认工具,说明它已在接管格式化,但你的 settings.json 里写的 "prettier.singleQuote": true 实际上被忽略。
- 常见错误现象:
'export default {}'被转成"export default {}";className='btn'变成className="btn";甚至require('./utils')里的路径也被改 - 检查路径:打开项目根目录,确认是否存在
.prettierrc、prettier.config.js或package.json里的prettier字段 - 如果没配过但依然被改引号,大概率是 ESLint 插件启用了
eslint.format.enable,底层调用了 Prettier(而非你手动装的 Prettier 插件)
必须用项目级配置文件生效
在项目根目录新建 .prettierrc,内容只写一行:
{"singleQuote": true}
或者用 JS 文件形式(兼容动态逻辑):
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
module.exports = { singleQuote: true };
- 这个配置对所有 Prettier 支持的语言都生效:JS/TS/JSX/Vue 模板中的字符串、属性值、导入路径等
- 改完后必须执行
Developer: Reload Window或重启 VSCode,否则缓存可能让旧行为持续几分钟 - 不要在
.vscode/settings.json里重复写prettier.singleQuote,纯属冗余,还可能误导后续维护者
Vue 项目还要防 Vetur / Volar 和 Prettier 打架
Vue 文件(.vue)里 HTML 模板、JS 逻辑、CSS 样式三块可能被不同工具处理。Vetur 默认把 JS 块交给 vscode-typescript,而它不认 .prettierrc,结果就是模板里单引号正常,<script></script> 里还是被转双引号。
- 正确做法:显式指定 Vetur 的 JS formatter 为 Prettier:
"vetur.format.defaultFormatter.js": "prettier" - Vue 3 项目务必禁用 Vetur,启用 Volar,并加配置:
"vue.preferences.useVolarForVue3": true,否则 Volar 和 Vetur 会争抢语言服务,导致格式化随机失效 - 如果同时用 ESLint,必须安装
eslint-config-prettier并确保它在extends数组末尾,否则 ESLint 的quotes规则会和 Prettier 冲突,出现“报错说要用单引号,但格式化后还是双引号”的假死状态
ESLint 用户最容易漏掉的关键点
很多人以为装了 eslint-plugin-prettier 就万事大吉,其实真正起效的是 eslint-config-prettier ——它负责关掉 ESLint 所有与 Prettier 重叠的样式规则。没有它,ESLint 仍会按自己那套检查引号,而 Prettier 按另一套修复,保存时反复横跳。
- 验证是否生效:在
.eslintrc.cjs或.eslintrc.js中检查extends是否包含eslint-config-prettier,且位置在最后 - 禁用 ESLint 的格式能力:
"eslint.format.enable": false,避免它和 Prettier 同时响应editor.formatOnSave - 别手动开
"editor.codeActionsOnSave": {"source.fixAll.eslint": true},除非你明确需要 ESLint 修复逻辑错误(比如未定义变量),而不是样式问题
最常被忽略的其实是配置加载顺序:Prettier 配置文件存在时,VSCode 设置、工作区设置、用户设置全部作废;而 ESLint 的 eslint-config-prettier 如果没放在 extends 末尾,前面的规则会把它覆盖掉——这两处一错,单引号问题就永远修不干净。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










