使用direnv

时间:2018-10-25 11:54:16

标签: visual-studio-code direnv

我有一个开发环境,该开发环境使用direnvPATH指向给定的一组可执行文件。这些可执行文件每个月都有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 标签中看到任务正在运行正确的命令,但是:

  1. 该命令不产生可见输出(我将其复制并粘贴到外壳中,并且按预期工作,并在运行时打印设置的环境变量)

  2. 启动器仍然无法在我的node上找到PATH

我不确定在preLaunchTask和启动之间是否保留了环境变量。是这样吗在Visual Studio Code上运行任务时,如何正确设置direnv来为我设置环境?

0 个答案:

没有答案