如何在VS Code启动时运行多任务且各任务使用不同工作目录?
VS Code 多项目启动任务配置方案
1. 解决子目录执行命令问题的基础任务配置
在.vscode/tasks.json里,通过cwd字段指定命令执行的子目录,就能实现进入对应路径运行指令。同时可以用复合任务整合所有项目任务,实现VS Code启动时自动批量执行。
完整tasks.json示例
{ "version": "2.0.0", "tasks": [ // Project1:folder2 启动docker compose { "label": "project1: folder2 docker up", "type": "shell", "command": "docker compose start", "cwd": "${workspaceFolder}/project1/folder1/folder2", "problemMatcher": [] }, // Project1:folder3 启动docker compose { "label": "project1: folder3 docker up", "type": "shell", "command": "docker compose start", "cwd": "${workspaceFolder}/project1/folder1/folder3", "problemMatcher": [] }, // Project2:folder4 启动docker { "label": "project2: docker start", "type": "shell", "command": "docker start", "cwd": "${workspaceFolder}/project2/folder4", "problemMatcher": [] }, // Project3:执行ng lint { "label": "project3: ng lint", "type": "shell", "command": "ng lint", "cwd": "${workspaceFolder}/project3", "problemMatcher": ["$tslint5"] }, // Project3:启动ng serve(依赖lint执行完成) { "label": "project3: ng serve", "type": "shell", "command": "ng serve", "cwd": "${workspaceFolder}/project3", "problemMatcher": [], "dependsOn": ["project3: ng lint"] }, // 复合任务:整合所有项目的shell任务,启动时自动执行 { "label": "all-projects-start", "dependsOn": [ "project1: folder2 docker up", "project1: folder3 docker up", "project2: docker start", "project3: ng serve" ], "dependsOrder": "parallel", // 并行执行所有任务,需串行改为"sequence" "runOptions": { "runOn": "folderOpen" } } ] }
2. 整合Project4的Launch任务
要自动启动已有的launch任务,有两种实现方式:
方式1:通过任务触发launch配置
在tasks.json中新增一个调用launch任务的配置,然后加入到复合任务的依赖列表:
{ "label": "start-project4-launch", "type": "shell", "command": "${command:extension.vscode.debug.start}", "args": ["你的Project4 launch名称"], // 替换为launch.json中Project4配置的name字段 "problemMatcher": [] }
将start-project4-launch添加到all-projects-start的dependsOn数组即可。
方式2:直接配置launch自动启动
修改.vscode/launch.json,给Project4的launch配置添加自动启动规则:
{ "version": "0.2.0", "configurations": [ { "name": "你的Project4 launch名称", // 原有配置保持不变 "runOptions": { "runOn": "folderOpen" } } ] }
关键配置说明
cwd:指定命令执行的工作目录,${workspaceFolder}对应VS Code当前工作区根路径,拼接子目录即可进入对应位置执行命令。dependsOn:设置任务依赖,比如让ng serve等待ng lint执行完成再启动。dependsOrder:复合任务的执行顺序,parallel为并行启动,sequence为按顺序逐个执行。runOn: "folderOpen":实现VS Code启动时自动触发对应任务。
内容的提问来源于stack exchange,提问作者user20032745
相关产品推荐
相关产品推荐

