prettier 的 singlequote 必须显式设为 true,否则 vscode 仍用双引号;需确保 prettier.config.js 含 singlequote: true、vscode 默认格式化器设为 esbenp.prettier-vscode、禁用 eslint 自动格式化、vue/ts 文件有对应语言插件支持。

prettier.config.js 里 singleQuote 必须设为 true
VSCode 不会自己猜你想要单引号,它只读 Prettier 的配置。如果你没显式告诉 Prettier 用单引号,哪怕 VSCode 设置了默认格式化工具,它也照用双引号。
常见错误现象:formatOnSave 生效了,但保存后字符串还是 "hello" 而不是 'hello' —— 很大概率是配置文件里漏了或写错了这一项。
-
prettier.config.js(推荐):导出对象中必须包含singleQuote: true -
.prettierrc(JSON):字段名要加引号,值是布尔值,别写成字符串"true" - 如果项目根目录没有配置文件,VSCode 会 fallback 到用户级 Prettier 配置(不推荐依赖这个)
module.exports = {
singleQuote: true,
semi: true,
tabWidth: 2
};
VSCode 的 editor.defaultFormatter 要指向 Prettier 扩展
装了 Prettier 插件 ≠ 自动接管格式化。VSCode 默认用内置的 JavaScript 格式化器,它根本不认 singleQuote 这种配置。
使用场景:你在 JS/TS/JSX/HTML/MDX 文件里按 Shift+Alt+F 或启用了 formatOnSave,但结果没变 —— 先检查这个设置是否生效。
- 打开设置(
Ctrl+,),搜default formatter,在「Editor: Default Formatter」下拉选中esbenp.prettier-vscode - 或者直接编辑
settings.json,确保有:"editor.defaultFormatter": "esbenp.prettier-vscode" - 如果工作区里有多个语言(比如同时写 Vue 和 Python),建议在
"[javascript]"等语言块里单独指定,避免影响其他类型文件
别让 ESLint 或其他格式化插件“抢”走控制权
ESLint 的 quotes 规则(如 ["error", "single"])只做校验,不自动修复引号;而 Prettier 的 singleQuote 是强制重写。两者混用时,容易出现「保存后又被 ESLint 修复回双引号」的来回打架。
性能 / 兼容性影响:Prettier 和 ESLint 同时启用格式化,不仅慢,还可能因执行顺序不同导致结果不稳定。
- 关闭 ESLint 的自动格式化:设置里关掉
eslint.format.enable - 用
eslint-plugin-prettier把 Prettier 规则当 ESLint 规则跑(只校验,不格式化),保持统一 - 确认没有其他格式化插件(如 Beautify、JavaScript Standard Style)被意外启用
Vue / TypeScript 文件里引号没变?检查文件关联和插件支持
Prettier 对 .vue 和 .ts 的支持不是开箱即用的——它依赖对应语言插件提供解析能力。如果这些文件里 singleQuote 不生效,问题往往不在配置本身。
常见错误现象:JS 文件正常转单引号,但 <script></script> 块里的字符串还是双引号;或者 TS 接口里的属性名引号不变。
- 确保已安装
Volar(Vue 3)或Vetur(Vue 2),并开启其格式化支持(Volar 默认集成 Prettier) - TypeScript 需要
typescript-eslint+prettier协同,且parserOptions.project正确指向tsconfig.json - 在 VSCode 中右下角点击当前文件语言模式(如 “Vue HTML”),确认不是被识别成了 “HTML” 或 “Plain Text”
singleQuote 是开关型配置,但它真正起效的前提是一连串依赖链都对得上:配置文件存在且正确、VSCode 指定了 formatter、没有其他工具干扰、目标文件类型被正确解析。少一环,就卡在双引号上。











