项目级配置(.vscode/settings.json 和 .prettierrc)才能真正统一团队代码风格,因全局设置易被工作区覆盖、无法适配多语言及跨编辑器需求,且必须配合.editorconfig保障基础编辑行为一致。

VSCode 全局格式化设置不能解决团队协作中的风格统一问题,它只影响你本地所有项目,且容易被工作区配置覆盖——真正该配的是项目级 .vscode/settings.json 和 .prettierrc。
为什么全局设置 editor.formatOnSave 会失效
常见错误现象:editor.formatOnSave 在用户设置里设为 true,但保存 JS 文件没反应;或者 Vue 文件不格式化,而 JS 可以。
- 工作区设置(
.vscode/settings.json)优先级高于全局设置,只要它里面写了"editor.formatOnSave": false或没配editor.defaultFormatter,全局开关就完全无效 -
editor.defaultFormatter必须填扩展的完整 ID,比如 Prettier 是esbenp.prettier-vscode,填prettier或prettier-vscode都不会生效 - 语言模式不匹配:Prettier 默认支持
javascript、typescript、html,但.vue文件默认语言模式是vue,需额外加语言特异性配置:"[vue]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }
全局设置只适合个人单项目开发场景
如果你确实只用 VSCode 写自己一个人维护的小工具、脚本,且从不换项目,那可以谨慎开启全局格式化。但要注意:
- 全局
editor.defaultFormatter一旦设死,打开任何文件(比如一个临时.txt)都可能触发格式化失败报错 - 不同语言需要不同格式化器:Python 推荐
ms-python.black-formatter,Go 用golang.go,混用一个 formatter 会导致部分文件无法格式化 - 大文件(>1MB)在低配机器上容易卡顿,建议加超时限制:
"editor.formatOnSaveTimeout": 750
真正该配的不是全局,而是 .vscode/settings.json
项目根目录下建 .vscode/settings.json,内容示例:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
这个文件必须提交到 Git,才能让所有协作者获得一致行为。它不污染你的其他项目,也不会被别人的工作区设置干扰。
配套还要有 .prettierrc(或 .prettierrc.json),定义规则如 "semi": false、"singleQuote": true——这些才是决定“格式成什么样”的关键,而不仅仅是“要不要格式化”。
别忘了 .editorconfig 是跨编辑器基础层
.editorconfig 解决的是缩进风格、换行符、空格/Tab 这类编辑器底层行为,和 Prettier 不冲突,反而互补:
- Prettier 管代码结构(括号位置、逗号、链式调用换行)
-
.editorconfig管编辑器行为(新建文件用 LF 还是 CRLF、Tab 宽度是 2 还是 4) - 它被 WebStorm、Sublime、Vim 等广泛支持,是团队里非 VSCode 用户也能遵守的底线
很多人只配 Prettier 却漏掉 .editorconfig,结果 Windows 用户提交 CRLF,Linux CI 构建失败——这种细节最容易被忽略,也最难排查。


















