Prettier 配置了单引号为啥还是变成双引号? Mc.向景 提问于 2026-02-28 08:24:22 阅读 17 工具 我在项目里用 Prettier 格式化代码,明明在 .prettierrc 里设置了单引号,但保存后字符串还是被改成双引号了,完全搞不懂是哪里出问题。 我试过重启 VS Code、删 node_modules 重装依赖,也确认了没和其他格式化插件冲突。配置文件内容如下: { "semi": true, "singleQuote": true, "tabWidth": 2 } Prettier配置规则 我来解答 赞 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 加载更多 相关推荐 1 回答 51 浏览 Prettier配置了单引号和缩进,但代码保存后还是双引号和2个空格? 我在项目根目录设置了.prettierrc文件,配置了singleQuote: true和tabWidth: 4,但保存JS文件时代码还是显示双引号和2个空格缩进。尝试过重启VSCode和运行npx ... 迷人的雨诺 前端 2026-02-01 18:16:27 2 回答 22 浏览 Prettier配置了尾逗号为什么还是被删除了? 我在项目里启用了Prettier的trailingComma选项,但保存代码时对象最后一项的逗号还是被自动删掉了。比如: // .prettierrc配置了"trailingComma": "all"... 公孙春光 工具 2026-02-07 15:05:26 2 回答 46 浏览 Prettier配置trailingComma后,JSX数组元素为何不自动添加尾随逗号? 大家好,我在React项目里配置了Prettier的trailingComma设为'es5',普通JS数组最后一个元素会自动加逗号,但JSX里的数组元素最后一个逗号还是被去掉了。比如这个组件: fun... ❤杏花 工具 2026-01-28 16:33:30 2 回答 39 浏览 Prettier的printWidth设置后代码还是换行了是怎么回事? 在React项目里设置了Prettier的printWidth为80,但写长字符串时代码还是在80字符前强行换行了。比如写这种JSX: {`const longText = '这个字符串明明没到80个... 技术玉曼 工具 2026-01-27 23:56:21 2 回答 40 浏览 为什么Prettier和ESLint配置后代码格式还是不一致? 最近在React项目里同时用了Prettier和ESLint,但保存代码时格式总报错。比如我写个函数: const greet = (name) => console.log(`Hello ${... ___金梅 工具 2026-01-26 04:42:32 1 回答 8 浏览 Prettier 格式化 Vue 模板时为什么缩进不对? 我用 Prettier 格式化 Vue 文件,但模板部分的缩进总是乱的,明明配置了 tabWidth 为 2,可它还是用 4 个空格。试过重启编辑器、重装插件都没用。 这是我的组件代码: <te... 闲人志利 前端 2026-03-04 12:13:18 1 回答 18 浏览 Prettier 为啥不格式化我的 Vue 单文件组件? 我用 Prettier 格式化 Vue 文件时,模板部分完全没反应,是配置问题吗? 我已经装了 Vetur 和 Prettier 插件,也设置了默认格式化工具为 Prettier,但保存时只有 scr... 令狐淇钧 工具 2026-02-28 03:42:22 1 回答 27 浏览 为什么安装了prettier的husky hook后提交还是没格式化? 刚给项目配了husky + prettier的pre-commit钩子,但每次提交代码都没触发格式化。已经按文档装了husky、prettier、lint-staged,package.json里配置... 司徒兴瑞 工具 2026-02-19 12:23:27 2 回答 65 浏览 ESLint和Prettier配置冲突怎么解决?代码格式检查老报错 最近团队要求统一代码规范,我把ESLint和Prettier都配上了,但每次保存代码都会报错,比如"Unexpected spaces"和"Missing semicolon"。 尝试过安装eslin... Zz子斌 前端 2026-02-17 00:11:28 2 回答 32 浏览 Prettier配置中如何让对象字面量的括号始终换行? 在React项目里用Prettier格式化时,发现对象字面量的大括号没有按预期换行。比如写成这样:{ foo: 'bar' },但根据团队规范需要强制换行成: { foo: 'bar' } 我尝试在.... ♫蒙蒙 工具 2026-02-15 01:03:25
首先检查 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 字段,看看有没有类似这样的规则:
有的话改成
"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,有时候缓存挺顽固的。