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

n00*_*00b 6 visual-studio-code

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

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

Sam*_*Sam 12

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

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

vscode变量参考很好地记录了这些解决方案。

环境变量(文档

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

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
Run Code Online (Sandbox Code Playgroud)

输入变量(文档

提示输入

您可以通过定义输入类型来在启动时提示输入敏感信息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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

a的定义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"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

command类型的其他选项有:

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


n00*_*00b 0

我已经使用了一个解决方法,即使用该dotenv包。

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