Prettier 配置了单引号为啥还是变成双引号?

Mc.向景 阅读 17

我在项目里用 Prettier 格式化代码,明明在 .prettierrc 里设置了单引号,但保存后字符串还是被改成双引号了,完全搞不懂是哪里出问题。

我试过重启 VS Code、删 node_modules 重装依赖,也确认了没和其他格式化插件冲突。配置文件内容如下:

{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2
}
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
シ晓萌
シ晓萌 Lv1
这个问题我之前也踩过坑,配置文件本身没问题,但有几个地方容易覆盖你的设置。

首先检查 VS Code 的 settings.json,看看有没有 prettier.singleQuote 或者 javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets 之类的配置。VS Code 的用户设置优先级可能会覆盖项目里的 .prettierrc。在 VS Code 里按 Ctrl+Shift+P,搜 "Open User Settings (JSON)",搜一下 prettier 相关的配置,有就删掉或者改成 true。

第二个常见原因是 ESLint 在搞鬼。如果你项目里装了 ESLint,它可能配置了 quotes 规则,保存时 ESLint 自动修复把引号又改回去了。要做校验的话,检查 .eslintrc 或者 package.json 里的 eslintConfig 字段,看看有没有类似这样的规则:

{
"rules": {
"quotes": ["error", "double"]
}
}


有的话改成 "single" 或者直接关掉这个规则。更省事的做法是装 eslint-config-prettier,它会关掉所有和 Prettier 冲突的 ESLint 规则。

第三个可能性是 JSON 格式的配置文件被其他配置覆盖了。Prettier 支持多种配置文件格式,优先级从高到低是 package.json 里的 prettier 字段、.prettierrc.js、.prettierrc.json、.prettierrc(YAML)、.prettierrc.toml。检查一下项目根目录是不是有多个配置文件,或者 package.json 里是不是也写了 prettier 配置,那个优先级比 .prettierrc.json 高。

最后有个排查技巧,在项目根目录跑 npx prettier --check ./src(路径换成你的源码目录),看看 Prettier 到底用的什么配置。加 --write 参数能直接看到格式化后的结果,确认是不是 Prettier 本身的问题还是编辑器的问题。

对了,改完配置记得重启 VS Code,有时候缓存挺顽固的。
点赞 3
2026-02-28 16:45