VSCode多根工作区如何获取根目录变量?
VSCode多根工作区任务中如何指代工作区根目录?
我在使用VSCode的多根工作区,希望在myprojects.code-workspace文件中定义任务时,用变量指代工作区根目录。常规.vscode/tasks.json中可使用${workspaceFolder},但在工作区配置文件里创建如下任务:
{ "label": "foo", "type": "shell", "command": "echo ${workspaceFolder}" }
执行后输出的是第一个项目的路径:
/home/username/myprojects/project1
而非预期的多根工作区根路径:
/home/username/myprojects
显然${workspaceFolder}不适用,请问是否存在指代多根工作区根目录的变量?
更新说明
为说明需求背景,这是常见的开发者配置:类似单体仓库(monorepo),所有项目同时打开以便操作,但并非真正的单体仓库,目录结构如下:
myprojects/ # 多根工作区的根目录 .code-workspace # 包含针对所有项目的任务(因此需要多根工作区的根目录路径) project1/ .git/ src/ project2/ .git/ src/ project3/ .git/ src/
解决方案
可以使用${workspaceFileDirname}变量,它会直接指向.code-workspace配置文件所在的目录,也就是你需要的多根工作区根路径。
修改后的任务示例:
{ "label": "foo", "type": "shell", "command": "echo ${workspaceFileDirname}" }
执行该任务后,就会输出预期的/home/username/myprojects路径。
补充说明:
${workspaceFile}指向的是.code-workspace文件的完整路径,${workspaceFileDirname}是该文件所在的目录,完全匹配多根工作区的根目录需求。- 无论你的工作区配置文件名是什么,只要它放在多根工作区的根目录下,这个变量都能正确返回目标路径。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

