发布于2026-07-06 阅读(0)
扫一扫,手机访问
Prettier 默认强制使用双引号,和 Vue 项目要求单引号冲突时,必须通过 singleQuote: true 显式覆盖。但很多人发现,明明在 VSCode 设置里改了,却完全没用。这到底是怎么回事?

Prettier 默认强制双引号,和 Vue 项目要求单引号冲突时,必须通过 singleQuote: true 显式覆盖。VSCode 设置项 prettier.singleQuote 在 2026 年已完全失效。
问题出在 Prettier 的配置加载机制上。自 2022 年起,Prettier 就不再读取 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.format.enable,底层调用了 Prettier(而非你手动装的 Prettier 插件)。解决方案其实很简单:在项目根目录新建 .prettierrc,内容只写一行:
{"singleQuote": true}
或者用 JS 文件形式,兼容动态逻辑:
module.exports = { singleQuote: true };
Developer: Reload Window 或重启 VSCode,否则缓存可能让旧行为持续几分钟。.vscode/settings.json 里重复写 prettier.singleQuote,纯属冗余,还可能误导后续维护者。Vue 文件(.vue)里 HTML 模板、JS 逻辑、CSS 样式三块可能被不同工具处理。Vetur 默认把 JS 块交给 vscode-typescript,而它不认 .prettierrc,结果就是模板里单引号正常, 里还是被转双引号。
"vetur.format.defaultFormatter.js": "prettier"。"vue.preferences.useVolarForVue3": true,否则 Volar 和 Vetur 会争抢语言服务,导致格式化随机失效。eslint-config-prettier 并确保它在 extends 数组末尾,否则 ESLint 的 quotes 规则会和 Prettier 冲突,出现“报错说要用单引号,但格式化后还是双引号”的假死状态。很多人以为装了 eslint-plugin-prettier 就万事大吉,其实真正起效的是 eslint-config-prettier——它负责关掉 ESLint 所有与 Prettier 重叠的样式规则。没有它,ESLint 仍会按自己那套检查引号,而 Prettier 按另一套修复,保存时反复横跳。
.eslintrc.cjs 或 .eslintrc.js 中检查 extends 是否包含 eslint-config-prettier,且位置在最后。"eslint.format.enable": false,避免它和 Prettier 同时响应 editor.formatOnSa ve。"editor.codeActionsOnSa ve": {"source.fixAll.eslint": true},除非你明确需要 ESLint 修复逻辑错误(比如未定义变量),而不是样式问题。最常被忽略的其实是配置加载顺序:Prettier 配置文件存在时,VSCode 设置、工作区设置、用户设置全部作废;而 ESLint 的 eslint-config-prettier 如果没放在 extends 末尾,前面的规则会把它覆盖掉——这两处一错,单引号问题就永远修不干净。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8