VSCode 怎么配置 Prettier 实现保存自动格式化 Vue 代码?

文章导读
在 VSCode 中配置 Prettier 实现 Vue 代码保存自动格式化,需要安装 Prettier 扩展并将其设为默认格式化程序,同时启用“保存时格式化”选项。此方案适用于 Vue 2 和 Vue 3 项目,但需注意 Vue 3 推荐配合 Volar 扩展使用,避免格式化程序冲突。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在 VSCode 中配置 Prettier 实现 Vue 代码保存自动格式化,需要安装 Prettier 扩展并将其设为默认格式化程序,同时启用“保存时格式化”选项。此方案适用于 Vue 2 和 Vue 3 项目,但需注意 Vue 3 推荐配合 Volar 扩展使用,避免格式化程序冲突。

先说结论:通过安装 Prettier 扩展并修改 VSCode 用户设置,可以实现保存时自动格式化 Vue 文件,核心在于正确设置默认格式化程序。

  • 适合: Vue 2 及 Vue 3 项目,希望统一代码风格团队。
  • 先准备: 安装 Prettier 扩展及对应 Vue 支持扩展(Volar 或 Veturin)。
  • 验收: 保存 .vue 文件后,代码缩进和引号风格立即变更。

快速处理思路

如果不方便逐步操作,可直接在 VSCode 设置中搜索以下配置项进行修改,或直接在 settings.json 中粘贴配置。

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

上述配置强制所有文件及 Vue 特定文件使用 Prettier 扩展进行格式化,并在保存时触发。

为什么会这样

VSCode 本身不内置代码格式化逻辑,而是依赖扩展提供的格式化程序。当多个扩展(如 Volar 和 Prettier)都支持 Vue 文件时,VSCode 需要明确指定优先使用哪一个。未配置默认格式化程序时,保存动作可能不会触发任何格式化,或者触发了非预期的格式化程序。

VSCode 怎么配置 Prettier 实现保存自动格式化 Vue 代码?

分步处理

按以下顺序操作,确保扩展冲突最小化且配置生效。

步骤 1:安装必要扩展
在 VSCode 扩展商店搜索并安装 Prettier - Code formatter(ID: esbenp.prettier-vscode)。如果是 Vue 3 项目,建议安装 Vue - Official(原名 Volar,ID: Vue.volar);如果是 Vue 2 项目,通常使用 Veturin。

步骤 2:配置默认格式化程序
打开 VSCode 设置(Ctrl + ,),搜索 Default Formatter。在设置项中选择 Prettier - Code formatter。或者打开 settings.json 文件,添加以下配置:

"editor.defaultFormatter": "esbenp.prettier-vscode"

步骤 3:启用保存格式化
在设置中搜索 Format On Save,勾选 Editor: Format On Save。对应 JSON 配置为:

VSCode 怎么配置 Prettier 实现保存自动格式化 Vue 代码?
"editor.formatOnSave": true

步骤 4:处理 Vue 特定冲突
如果使用 Volar,它内置了格式化功能。为确保 Prettier 生效,建议在 settings.json 中显式指定 Vue 语言模式的格式化程序:

"[vue]": {
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

部分情况下需要禁用 Volar 的内置格式化,添加配置:"vue.format.enable": false

怎么验证是否生效

打开一个现有的 .vue 文件,故意打乱某一行代码的缩进或将单引号改为双引号(取决于 Prettier 配置)。按下 Ctrl + S 保存文件。如果代码立即恢复为配置的格式风格,说明配置生效。若未变化,查看 VSCode 底部状态栏是否有格式化错误提示,或检查开发者工具控制台(Help -> Toggle Developer Tools)是否有扩展报错。

VSCode 怎么配置 Prettier 实现保存自动格式化 Vue 代码?

常见坑

1. 扩展冲突: 同时启用 Volar 和 Veturin 可能导致格式化行为不确定,建议根据 Vue 版本只启用其中一个。
2. ESLint 冲突: 如果项目同时使用 ESLint,Prettier 的规则可能与 ESLint 冲突。建议安装 eslint-config-prettier 关闭 ESLint 中与 Prettier 重复的规则。
3. 项目级配置缺失: 如果项目根目录没有 .prettierrc 文件,Prettier 会使用默认规则,可能与团队规范不一致。建议提交统一的配置文件到版本控制。

常见问题

保存后没有自动格式化怎么办?

检查 editor.formatOnSave 是否为 true,并确认当前文件语言模式被识别为 Vue。有时需要重启 VSCode 使扩展配置生效。

Vue 3 项目应该用 Volar 还是 Veturin?

Vue 3 项目官方推荐使用 Volar(现名 Vue - Official),Veturin 主要维护 Vue 2 支持。配合 Prettier 时,需确保默认格式化程序指向 Prettier 扩展。

如何确认 Prettier 使用了项目内的配置?

在终端运行 npx prettier `--check` . 可以检查文件是否符合配置。VSCode 扩展会自动读取项目根目录的 .prettierrc 文件,无需额外设置路径。

参考来源

  • Visual Studio Marketplace - Prettier - Code formatter: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
  • Vue.js Official Docs - Tooling: https://vuejs.org/guide/scaling-up/tooling.html
  • Prettier Official Docs - Configuration: https://prettier.io/docs/en/configuration.html