vscode工作区配置文件是独立的.code-workspace json文件,非.vscode文件夹;它显式定义多根路径与全局设置,必须手动“将工作区另存为”生成,且需与项目一同迁移并校准路径。

工作区设置文件是 .code-workspace,不是 .vscode 文件夹
很多人误以为工作区配置存在项目根目录下的 .vscode 文件夹里,其实那是「单根项目」的本地设置;真正的多根工作区配置只保存在一个独立的 .code-workspace 文件中——它本质是 JSON,包含所有已添加文件夹路径、窗口布局、任务和调试配置。
这个文件必须手动另存:菜单栏点击 文件 → 将工作区另存为…(注意不是“将文件夹添加到工作区”),后缀名必须是 .code-workspace。如果直接关掉窗口没保存,所有添加的文件夹都会丢失,且无法从 .vscode 里找回。
-
.code-workspace文件里记录的是绝对路径,换电脑后路径失效,需手动编辑或用相对路径(但 VSCode 不原生支持相对路径,只能靠脚本替换) - 它不包含扩展启用状态,那些控制开关在
settings.json的"extensions.ignoreRecommendations"或工作区 settings 里,得单独备份 - 若工作区里有自定义
tasks.json或launch.json,它们仍放在各项目根目录的.vscode/下,.code-workspace文件本身不打包这些
迁移时 .code-workspace 文件要连同项目一起移动
单独拷贝 .code-workspace 文件没用——它里面写的全是原始路径,比如 "folders": [{"path": "/Users/you/project-a"}, {"path": "/Users/you/project-b"}]。新机器上路径不存在,VSCode 会显示“文件夹不可用”,而且不会自动提示修复。
正确做法是把整个项目目录(含 .code-workspace 文件)一起复制过去,再用文本编辑器打开该文件,批量替换旧路径为新路径。macOS/Linux 可用 sed -i '' 's/old-path/new-path/g' my.project.code-workspace;Windows 建议用 VSCode 自带搜索替换(Ctrl+H,勾选“在文件中”并指定该文件)。
- 路径替换时注意斜杠方向:Windows 路径用双反斜杠
\或正斜杠/都可被识别,但不要混用 - 如果项目用了符号链接(如
ln -s),.code-workspace里记录的是链接目标路径,不是链接本身,迁移前最好先realpath确认 - VSCode 不校验路径是否存在就加载工作区,所以即使路径全错,它也只静默跳过文件夹,不会报错提醒你
工作区设置优先级高,但不会跨设备自动同步
你在 Preferences: Open Workspace Settings (JSON) 里改的配置,比如 "editor.tabSize": 4 或 "files.exclude",只写进 .code-workspace 文件,不会上传到 Settings Sync 云端。也就是说,即使你开了 Microsoft 账户同步,换电脑后这些设置也不会恢复。
必须把 .code-workspace 文件当作项目资产一并纳入版本管理(.gitignore 里别 exclude 它),或者和项目代码一起备份。否则每次新环境都要重新配一遍 tabSize、格式化命令、测试脚本路径等。
- Settings Sync 只同步用户级设置(
%APPDATA%CodeUsersettings.json),不碰工作区文件 - 工作区里禁用的扩展(如
"extensions.disabledRecommendations")也不会同步,得在新机器上手动禁用 - 如果你用 Remote-SSH 连远程服务器,
.code-workspace里的路径是本地路径,远程项目实际运行路径无关——这点容易混淆,别填错
重装或换电脑后,别漏掉 .vscode 目录里的东西
.code-workspace 只管“哪些文件夹加入工作区”和“全局工作区设置”,但每个子项目自己的 .vscode/ 目录里还藏着关键内容:比如 tasks.json(构建命令)、launch.json(调试配置)、extensions.json(推荐插件列表)。这些不会被 .code-workspace 包含,也不会被 Settings Sync 同步。
迁移时最容易忽略的就是这些分散在各子项目里的 .vscode 文件夹。尤其是 tasks.json 里写了硬编码路径(如 "${workspaceFolder}/node_modules/.bin/eslint"),换环境后可能直接执行失败。
- 检查每个子项目根目录下是否存在
.vscode/,重点看tasks.json和launch.json里有没有绝对路径或平台相关命令 -
extensions.json是建议清单,不是强制安装列表,它只影响“推荐扩展”弹窗,不影响实际功能 - 如果用了 Prettier、ESLint 等工具,它们的配置文件(
.prettierrc、.eslintrc.js)通常不在.vscode里,而是项目根目录,也要一并迁移
.code-workspace、各子项目的 .vscode、用户级 settings.json 三者职责不同,却都影响开发体验。漏掉任何一个,都可能让新环境跑不起来调试或构建任务。











