如何在VSCode的launch.json中设置秘密环境变量进行调试?

时间:2019-02-27 23:28:38

标签: visual-studio-code

我正在使用VSCode调试器,并通过env属性设置环境变量。我还具有需要设置为env vars的数据库密码和机密信息,但我想签入launch.json,以便可以在团队之间共享调试设置。

有没有一种方法可以设置这些敏感的环境变量进行调试,而无需将其实际检查到源代码管理中?

2 个答案:

答案 0 :(得分:0)

我为此使用了一种解决方法,即使用dotenv包。

因此,它们不是从VSCode加载环境变量,而是从应用程序本身内部加载。

答案 1 :(得分:0)

有几种方法可以在 launch.json 中从 Visual Studio Code (vscode) 中引用敏感数据,而无需将数据包含在 launch.json 文件中。

  • 环境变量
  • 输入变量:提示
  • 输入变量:自定义命令

vscode Variables Reference 很好地记录了这些解决方案。

环境变量 (docs)

您可以将敏感变量放在环境变量中(例如,可能通过您的 shell 配置文件加载,例如在 .bash_profile 中)。然后,您可以“通过 ${env:Name} 语法(例如,${env:USERNAME})”引用它。

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}

输入变量 (docs)

提示输入

您可以通过定义 promptString 输入类型在启动时提示敏感信息,如下面从文档中提取的配置所示。下面的 ${input:componentName} 用作参数,并在下面的 inputs 部分中定义为 promptString,用于在您运行相关任务时提示您输入值。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "ng g",
      "type": "shell",
      "command": "ng",
      "args": ["g", "${input:componentType}", "${input:componentName}"]
    }
  ],
  "inputs": [
    /** skipping componentType definition for brevity -- see docs for that */
    {
      "type": "promptString",
      "id": "componentName",
      "description": "Name your component.",
      "default": "my-new-component"
    }
  ]
}

promptString 的定义如下:

<块引用>
  • 描述:显示在快速输入中,为输入提供上下文。
  • default:如果用户不输入其他内容,将使用的默认值。
  • password:设置为 true 以使用不会显示输入值的密码提示输入。

为输入运行自定义命令

您还可以运行自定义命令来获取输入。文档使用以下配置作为示例。请注意,与其他输入类型一样,必须在 inputs 部分中使用 type 定义命令。

{
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Run specific test",
      "program": "${workspaceFolder}/${input:pickTest}"
    }
  ],
  "inputs": [
    {
      "id": "pickTest",
      "type": "command",
      "command": "extension.mochaSupport.testPicker",
      "args": {
        "testFolder": "/out/tests"
      }
    }
  ]
}

command 类型的其他选项是:

<块引用>
  • command:在变量插值上运行的命令。
  • args:传递给命令实现的可选选项包。