【问题标题】:How do I use custom environment variables in launch.json in VSCode如何在 VSCode 的 launch.json 中使用自定义环境变量
【发布时间】:2020-11-11 23:34:05
【问题描述】:

我知道这个问题听起来可能与这个问题相似: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}",

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

【问题讨论】:

  • 你用的是什么扩展? php 不是启动配置的有效类型。最终,我认为你会很遗憾地受到扩展支持的摆布。我认为您的问题是特定于 php 并使用 .env 文件而不仅仅是“使用自定义环境变量”,因为例如,节点启动配置已经支持使用 envFile
  • @soulshined PHP Debug by Felix Becker。您对如何为简单的节点启动配置完成它有任何参考吗? (没有 PHP)
  • 当然。您只需使用内置节点配置并调用envFile 属性,输入文件名并引用您执行的变量,就像您在示例中显示的那样:${env:}
  • 我确定我使用默认节点项目尝试过此操作,并且我很确定 VSC 不会自动加载 .env 文件。我相信${env:} 仅适用于全局系统变量。不过我可能是错的。您是否找到任何有关此的文档?
  • 它不会自动加载.env 文件,正确。这就是 envFile 属性的用途。 github.com/microsoft/vscode-js-debug/blob/master/OPTIONS.md

标签: visual-studio-code environment-variables


【解决方案1】:

您可以借助扩展程序 Command Variable 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"
      }
    }
  ]
}

【讨论】:

猜你喜欢
  • 2015-07-10
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多