VSCode中能否从tasks.json直接访问项目内其他JSON文件的配置?
直接从项目
app.json读取配置到VSCode Tasks的解决方案 你完全可以不用把配置复制到settings.json里,直接从项目的app.json中读取所需值——VSCode的内置变量系统虽然不支持直接读取自定义JSON,但我们可以借助脚本或者命令行工具来实现,下面结合你已经在使用的PowerShell环境给出两种实用方案:
方案1:修改现有PowerShell脚本,让它直接读取app.json
这是最简洁的方式,既然你已经在调用DevelopingDaily.ps1,不如让脚本自己从项目根目录的app.json中加载配置,省去在tasks里传递参数的麻烦:
在DevelopingDaily.ps1的开头添加以下代码:
# 定位到项目根目录的app.json(根据你的实际路径调整,这里假设app.json在工作区根目录) $appConfigPath = Join-Path -Path $PSScriptRoot -ChildPath "../app.json" $appConfig = Get-Content $appConfigPath | ConvertFrom-Json # 提取需要的配置项 $appName = $appConfig.appName $appPublisher = $appConfig.appPublisher $appVersion = $appConfig.appVersion $targetDockerContainerName = $appConfig.targetDockerContainerName
之后你就可以在脚本中直接使用这些变量,对应的tasks.json里的args部分可以简化(甚至完全移除这些配置参数):
"label": "Build APP and replace/publish in docker image", "type": "shell", "command": "${workspaceFolder}\\.vscode\\DevelopingDaily.ps1"
方案2:在tasks.json中直接用命令提取app.json的值
如果坚持要在tasks的参数中直接传递这些值,可以用PowerShell的命令动态读取并提取app.json中的字段,示例如下:
"label": "Build APP and replace/publish in docker image", "type": "shell", "command": "${workspaceFolder}\\.vscode\\DevelopingDaily.ps1", "args": [ { "value": "$(Get-Content ${workspaceFolder}/app.json | ConvertFrom-Json | Select-Object -ExpandProperty appName)", "quoting": "strong" }, { "value": "$(Get-Content ${workspaceFolder}/app.json | ConvertFrom-Json | Select-Object -ExpandProperty targetDockerContainerName)", "quoting": "strong" }, { "value": "${workspaceFolder}\\$(Get-Content ${workspaceFolder}/app.json | ConvertFrom-Json | ForEach-Object { $_.appPublisher + '_' + $_.appName + '_' + $_.appVersion }).app", "quoting": "strong" } ]
补充说明
VSCode的内置变量(比如${config:...})仅支持读取VSCode自身的设置、系统环境变量和预定义的工作区/文件变量,无法直接访问项目中的自定义JSON文件。所以上述两种方案都是通过脚本/命令行工具作为中间层来读取外部配置,这也是VSCode生态中处理这类需求的常规做法。
内容的提问来源于stack exchange,提问作者Radek
相关产品推荐
相关产品推荐

