直接结论:必须用.vscode/settings.json+.editorconfig+.vscode/extensions.json三文件组合并全部提交Git。因settings.json仅VSCode专属且运行时生效,editorconfig跨编辑器声明底层规则(如换行符、缩进风格),extensions.json统一推荐插件;缺一不可,否则Sublime/WebStorm用户格式错乱、VSCode用户插件缺失或配置不一致。

直接结论:靠个人设置同步或口头约定,100%失败;必须用 .vscode/settings.json + .editorconfig + .vscode/extensions.json 三文件组合,且全部提交进 Git。
为什么单靠 settings.json 不够用
很多人只在项目里放一个 .vscode/settings.json,以为设了 "editor.tabSize": 2 就万事大吉。但实际中会遇到:
- 开发者用 Sublime 或 WebStorm 打开项目,缩进立刻变回 Tab 或 4 空格
- VSCode 用户禁用了 EditorConfig 插件,
settings.json的files.eol或insert_final_newline就不生效 - 团队有人装了 Prettier 但没配
editor.defaultFormatter,保存时格式化行为不一致
根本问题在于:.vscode/settings.json 是 VSCode 专属、运行时生效;而 .editorconfig 是跨编辑器、由插件解析的声明式规则。两者必须共存,且 .editorconfig 要覆盖更底层的换行符、空格/Tab 切换等行为。
.editorconfig 怎么写才真正跨平台生效
常见错误是把 .editorconfig 写成“仅适配自己习惯”的样子,比如只配 indent_size = 2 却漏掉 end_of_line = lf,结果 Windows 用户一保存就多出 \r\n,Git 提交差异爆炸。
- 必须以
root = true开头,否则子目录可能被上级配置覆盖 -
[*.js]和[*.ts]要分开写,TypeScript 的indent_size常和 JS 一致,但[*.json]通常也设为 2,避免 package.json 格式混乱 -
trim_trailing_whitespace = true和insert_final_newline = true必须开启,这是减少 Git diff 噪声最有效的两项 - 不要写
charset = utf-8—— 当前 VSCode EditorConfig 插件(v0.17.4)根本不读这个字段,写了等于白写
示例片段:
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,ts}]
indent_style = space
indent_size = 2
[*.json]
indent_size = 2
.vscode/extensions.json 推荐插件不是摆设
这个文件本身不强制安装插件,但它会在 VSCode 打开项目时弹出“推荐扩展”提示栏。关键点在于:它能解决“为什么别人有 Volar 提示、我却没有”这类问题。
- 必须明确列出
"volta.vscode-volar"(Vue 3)、"dbaeumer.vscode-eslint"(ESLint)、"esbenp.prettier-vscode"(Prettier)——注意用官方发布名,不是市场显示名 - 如果团队用 TypeScript,加上
"ms-vscode.vscode-typescript-next"可提前用上 TS 新特性支持 - 别把 lint 工具插件和格式化插件混着推荐,比如
eslint-plugin-prettier是 npm 包,不是 VSCode 插件,写进去毫无作用
内容结构很简单:
{
"recommendations": [
"volta.vscode-volar",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
多根工作区配置容易被忽略的陷阱
当项目拆成 frontend/、backend/、shared/ 多个目录时,很多人直接在每个子目录下各自建 .vscode,结果是:
- 三个目录的
editor.tabSize设成了 2、4、2,团队成员打开不同文件夹行为不一致 - 调试配置
launch.json分散在各处,无法统一断点策略 - 新人不知道该打开哪个文件夹,经常只开
frontend,结果改不了共享逻辑
正确做法是:删掉所有子目录下的 .vscode,只在项目根建一个 team.code-workspace 文件,用 "folders" 显式声明路径,并在 "settings" 里统一定制。这样 VSCode 才会把它识别为“一个工作区”,所有设置才真正全局生效。
最容易被跳过的细节是:team.code-workspace 文件必须手动提交进 Git,并写进 README —— 否则新人 clone 后双击的是文件夹,不是工作区,前面所有配置都白搭。


















