如何在VSCode中设置多工作区以同时管理多个项目【教程】

11次阅读

.code-workspace 文件是vscode多工作区的jsON配置清单,需手动创建并保存,用于统一管理多项目路径、设置、调试等;其settings优先级最高,可覆盖文件夹级和用户级配置。

如何在VSCode中设置多工作区以同时管理多个项目【教程】

VSCode 的多工作区不是“打开多个窗口”那么简单,而是用一个 code-workspace 文件把多个独立项目路径组织起来,共享同一套设置、扩展和调试配置——关键在于它能统一管理跨项目的引用、符号跳转和任务运行。

什么是 .code-workspace 文件,怎么创建

它是一个 json 文件,本质是工作区的“配置清单”,不是项目文件夹本身。VSCode 不会自动为你生成,必须手动创建或通过命令面板触发。

  • 在 VSCode 中打开任意文件夹后,执行命令 File > Add Folder to Workspace...,添加第二个、第三个项目目录
  • 添加完毕后,执行 File > Save Workspace As...,保存为 my-projects.code-workspace
  • 此后双击该文件,或用命令 code my-projects.code-workspace 启动,就加载了全部文件夹
  • 注意:.code-workspace 文件里存的是绝对路径,换电脑或重装系统后需手动更新 folders 数组中的路径

多工作区下 settings.json 的作用域优先级

你可能在单个项目里改过 .vscode/settings.json,但在多工作区中,这个文件依然生效,但会被更高优先级的配置覆盖。

  • 工作区级(最高):在 .code-workspace 文件中直接写 "settings": { ... },比如统一关闭 ESLint 自动修复:"eslint.autoFixOnSave": false
  • 文件夹级(中):各项目根目录下的 .vscode/settings.json 仍有效,但只影响本项目内的文件
  • 用户级(最低):全局 settings.json,会被前两者覆盖
  • 常见陷阱:在 .code-workspace 中启用了 "files.exclude",结果某个子项目里的构建产物被意外隐藏,排查时容易忽略这个层级

调试多个服务时 launch.json 怎么配

多工作区不等于自动支持多进程调试;你需要在 .code-workspace"launch" 字段里定义多个配置,并用 "cwd" 显式指定每个服务的工作目录。

  • 不要指望 VSCode 自动识别各子文件夹里的 .vscode/launch.json —— 它只读取工作区根(即 .code-workspace 所在位置)下的 .vscode/launch.json
  • 每个 configuration 必须有唯一 name,并用 "cwd": "${workspaceFolder:service-api}" 指向对应子文件夹(service-api 是你在 .code-workspace 中给该文件夹起的 "name"
  • 如果依赖环境变量,别用 .env 文件相对路径,改用 "envFile": "${workspaceFolder:web-client}/.env.local"
  • 启动多个服务时,勾选调试侧边栏的 “Auto Attach” 或用 compound 配置一次性拉起,否则得手动逐个点 ▶️

真正麻烦的不是加几个文件夹,而是当某个子项目升级了 typescript 版本,而 workspace 级的 typescript.tsdk 指向旧路径时,整个工作区的类型检查就全乱了——这种隐式耦合,往往要等跳转定义失败才被发现。

text=ZqhQzanResources