我有一个开发环境,该开发环境使用direnv
将PATH
指向给定的一组可执行文件。这些可执行文件每个月都有node
。这种设置的优点是可以管理软件版本,从而使我们团队中的软件始终处于最新状态。
我想在调试模式下运行一些测试,所以我遵循instruction on VS Code's official documentation并进行了以下设置:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/node_modules/mocha/bin/mocha",
"args": [
"-r",
"ts-node/register",
"src/**/*.spec.ts"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}
这当然无法根据我们的PATH
文件设置.envrc
,因此找不到node
。
我首先尝试盲目添加一个community-provided direnv
plugin,我希望可以为我无缝地处理这件事,但是显然不能。
然后我尝试使用preLaunchTask
,所以我准备了以下任务:
{
"version": "2.0.0",
"tasks": [
{
"label": "direnv",
"type": "shell",
"command": "direnv allow ${workspaceFolder}"
}
]
}
然后在启动程序规范中引用它:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/node_modules/mocha/bin/mocha",
"args": [
"-r",
"ts-node/register",
"src/**/*.spec.ts"
],
"preLaunchTask": "direnv",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}
我可以在 Output 标签中看到任务正在运行正确的命令,但是:
该命令不产生可见输出(我将其复制并粘贴到外壳中,并且按预期工作,并在运行时打印设置的环境变量)
启动器仍然无法在我的node
上找到PATH
我不确定在preLaunchTask
和启动之间是否保留了环境变量。是这样吗在Visual Studio Code上运行任务时,如何正确设置direnv
来为我设置环境?