VSCode中如何将launch.json的输入变量传递到tasks.json无需二次输入
VSCode launch.json输入变量共享到tasks.json的实现方法
可以实现该需求,无需用户重复输入相同内容,以下是两种通用可行方案:
方案1:公共input配置抽离到工作区设置
VSCode 1.57及以上版本支持将通用输入变量定义放到.vscode/settings.json中,launch.json和tasks.json可直接共享调用,全程仅触发一次输入弹窗:
- 打开工作区的
.vscode/settings.json文件,新增如下配置:
{ "launch.inputs": [ { "id": "file_no", "type": "promptString", "description": "请输入文件编号" } ] }
- 删掉launch.json中原有的
inputs字段,保留${input:file_no}的引用即可 - tasks.json中直接使用
${input:file_no}即可正常读取同一输入值,无需额外定义
方案2:通过环境变量传递输入值
如果你不想修改全局配置,也可以在launch配置中将输入值写入环境变量,tasks.json直接读取对应环境变量即可:
- 修改launch.json的启动配置,新增
env字段传递输入值:
"configurations": [ { ... "args": ["${input:file_no}"], "preLaunchTask": "runPreTasks", "env": { "FILE_NO": "${input:file_no}" }, ... } ], // 原有inputs配置无需修改 "inputs": [ { "id": "file_no", "type": "promptString" } ]
- 修改tasks.json的参数,读取环境变量:
{ "version": "2.0.0", "tasks":[ { "label": "runPreTasks", "type": "shell", "command": "sh", "args": [ "/path2script/scriptName.sh", "${env:FILE_NO}" ] } ] }
注意事项
注意检查launch配置中preLaunchTask的拼写,你的示例中误写为preLanuchTask,拼写错误会导致预启动任务不生效。
内容的提问来源于stack exchange,提问作者Dr.PB
相关产品推荐
相关产品推荐

