📅  最后修改于: 2023-12-03 14:48:22.328000             🧑  作者: Mango
在使用 VS Code 进行开发时,我们经常会使用代码格式化的功能。其中,Prettier 是一款非常受欢迎的代码格式化工具。不过,使用 Prettier 的时候可能出现某些设置不起作用的情况。本文将介绍一种常见的问题:在 .prettierrc 中设置 jsx.singleQuote 为 true,但不起作用的情况。
当我们在项目根目录下创建 .prettierrc 文件,并设置 jsx.singleQuote 为 true 时,发现代码中的 JSX 的属性值并没有以单引号包裹,而是双引号包裹的。
// .prettierrc
{
"jsxSingleQuote": true
}
// 源代码
function Hello() {
return (
<div className="hello">
<span>Hello, World!</span>
</div>
);
}
// 格式化后的代码
function Hello() {
return (
<div className="hello">
<span>Hello, World!</span>
</div>
);
}
这个问题的原因是因为 VS Code 自带了一个代码格式化的功能,也和 Prettier 有冲突。在 VS Code 自带的代码格式化中,使用的是另一个库,即 js-beautify。而这个库中并没有对 JSX 属性值的单引号双引号做出特殊处理,导致 .prettierrc 中的设置不会对 JSX 属性值生效。
解决这个问题可以通过设置 VS Code 使用 Prettier 进行格式化。具体操作如下:
npm install prettier -D
安装 Prettier for VS Code 插件。
打开 VS Code 的设置,搜索 "Format On Save",并勾选这个选项。
在 VS Code 的设置中搜索 "Extensions",找到 "Edit in settings.json",并点击"edit settings.json"。
在打开的 "settings.json" 文件中添加以下代码:
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
// 格式化后的代码
function Hello() {
return (
<div className='hello'>
<span>Hello, World!</span>
</div>
);
}
本文介绍了在 VS Code 中使用 Prettier 时,修改 .prettierrc 中的配置不起作用的问题,并提供了解决方案。如果你在使用 Prettier 时也遇到了一些奇怪的问题,可以尝试通过类似的方式来解决。