首页 > 解决方案 > 如何在 VSCode 的 launch.json 中使用自定义环境变量

问题描述

我知道这个问题可能听起来与这个问题相似:How do I add environment variables to launch.json in VSCode

但我真正想要的是在实际的 launch.json 文件中使用我的 .env 文件中的变量,而不是在程序中使用它们。

所以我的设置是这样的:

project-root/
  |-- .env
  |-- .vscode/
        |-- launch.json
  |-- src/
        |-- my-plugin/
        |-- my-theme/
  |-- wordpress/
  |-- data/
  |-- docker-compose.yml

在我的 .env 文件中,我有这个:

PLUGIN_SLUG=my-plugin
THEME_SLUG=my-theme

现在,在我的 launch.json 文件中,我真的希望能够像这样使用${THEME_SLUG}${PLUGIN_SLUG}变量:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "pathMappings": {
        "/var/www/html/wp-content/plugins/${PLUGIN_SLUG}": "${workspaceRoot}/src/${PLUGIN_SLUG}",
        "/var/www/html/wp-content/themes/${THEME_SLUG}": "${workspaceRoot}/src/${THEME_SLUG}",
        "/var/www/html": "${workspaceRoot}/wordpress",
      },
    }
  ],
}

知道如何实现这一目标吗?

::编辑::

在进一步挖掘之后,我意识到当我/etc/profile.d/temp.sh像这样在全局内部设置变量时:

export PLUGIN_SLUG=codeable-plugin
export THEME_SLUG=codeable-theme

退出系统并重新登录后,我可以在任何地方使用这些变量,包括在我的 launch.json 文件中,如下所示:

   "/var/www/html/wp-content/plugins/${env:PLUGIN_SLUG}": "${workspaceRoot}/src/${env:PLUGIN_SLUG}",
   "/var/www/html/wp-content/themes/${env:THEME_SLUG}": "${workspaceRoot}/src/${env:THEME_SLUG}",

虽然这离我想要的更近了一步,但它并不是真的可行,每次我切换项目时在我的全局操作系统配置中手动更新这些变量,然后注销并再次登录。

标签: visual-studio-codeenvironment-variables

解决方案


您可以在扩展命令变量v1.4.0的帮助下做到这一点。

您可以将.env文件视为键值对文件。

您可以使用输入变量获取环境值的值:${input:name}

在输入变量中,您指定要使用的文件和密钥以及可能的默认值。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "pathMappings": {
        "/var/www/html/wp-content/plugins/${input:envPLUGIN}": "${workspaceFolder}/src/${input:envPLUGIN}",
        "/var/www/html/wp-content/themes/${input:envTHEME}": "${workspaceFolder}/src/${input:envTHEME}",
        "/var/www/html": "${workspaceFolder}/wordpress",
      },
    }
  ],
  "inputs": [
    {
      "id": "envPLUGIN",
      "type": "command",
      "command": "extension.commandvariable.file.content",
      "args": {
        "fileName": "${workspaceFolder}/.env",
        "key": "PLUGIN_SLUG",
        "default": "default-plugin"
      }
    },
    {
      "id": "envTHEME",
      "type": "command",
      "command": "extension.commandvariable.file.content",
      "args": {
        "fileName": "${workspaceFolder}/.env",
        "key": "THEME_SLUG"
      }
    }
  ]
}

推荐阅读