VSCode 如何设置保存时自动格式化代码 Prettier 配置

文章导读
VSCode 保存时自动格式化 Prettier 不是装个插件就完事,核心是把“默认格式化器”显式绑定给 Prettier,并确保保存触发开关未被语言级设置覆盖。
📋 目录
  1. A 命令速用版
  2. B 原理简述
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

VSCode 保存时自动格式化 Prettier 不是装个插件就完事,核心是把“默认格式化器”显式绑定给 Prettier,并确保保存触发开关未被语言级设置覆盖。

先说结论:必须同时满足插件安装、默认格式化器绑定、保存开关开启三个条件,缺一不可。

  • 适合:前端项目统一代码风格,减少 Review 时的格式争论
  • 先准备:安装 esbenp.prettier-vscode 插件及项目级 prettier 包
  • 验收:保存文件后代码缩进和引号立即变化,且状态栏显示 Prettier

命令速用版

如果是新项目,建议在项目根目录执行以下命令安装依赖,并在 settings.json 中填入基础配置:

npm install `--save-dev` prettier

settings.json 关键配置:

VSCode 如何设置保存时自动格式化代码 Prettier 配置
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

可选 .prettierrc 配置示例:

{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5"
}

原理简述

VSCode 默认不会自动“认领”文件格式化权,即使插件已安装。必须显式绑定默认格式化器,否则保存时调用的可能是内置格式器或 ESLint,导致 Prettier 完全不介入。此外,语言专属设置(如 [javascript])优先级高于全局设置,若局部关闭了 formatOnSave,全局开关也会失效。

分步处理

1. 安装官方插件:在扩展市场搜索 Prettier - Code formatter,确认发布者为 Esben Petersen,ID 为 esbenp.prettier-vscode。

2. 配置默认格式化器:打开命令面板(Ctrl+Shift+P),输入 Format Document With,选择 Configure Default Formatter,选中 Prettier。更稳妥的做法是在项目 .vscode/settings.json 中写死 editor.defaultFormatter。

VSCode 如何设置保存时自动格式化代码 Prettier 配置

3. 开启保存格式化:确保 editor.formatOnSave 为 true。若只对特定语言生效,需在语言块中单独配置,例如 "[typescript]": { "editor.formatOnSave": true }。

4. 创建配置文件:在项目根目录创建 .prettierrc 或 .prettierrc.json,确保语法正确。注意 Prettier 插件会从当前文件目录向上查找配置文件,建议统一放在项目根目录以避免冲突。

怎么验证是否生效

打开一个.js 或.ts 文件,查看右下角状态栏。如果显示 Prettier 而非 ESLint 或 None,说明绑定成功。故意打乱代码缩进和引号,按 Ctrl+S 保存,若代码立即恢复整齐且无报错,即配置生效。

VSCode 如何设置保存时自动格式化代码 Prettier 配置

常见坑

1. 配置文件语法错误:.prettierrc.json 末尾多逗号或使用 ES Module 语法(import/export)会导致静默失效,建议只用 JSON 格式或 CommonJS 导出。

2. ESLint 冲突:若同时开启 ESLint 自动修复和 Prettier 格式化,规则重叠会导致代码反复横跳。建议安装 eslint-config-prettier 关闭 ESLint 格式类规则。

3. 语言标识识别错误:TypeScript 文件有时被识别为 typescriptreact,需在设置中补充 "[typescriptreact]" 的格式化配置。

参考来源