如何在 VSCode 的 launch.json 中使用自定义环境变量
Posted
技术标签:
【中文标题】如何在 VSCode 的 launch.json 中使用自定义环境变量【英文标题】:How do I use custom environment variables in launch.json in VSCode 【发布时间】: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
【参考方案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"
]
【讨论】:
这看起来可行!非常感谢。我发现这部分文档特别有用:github.com/rioj7/command-variable#file-content-key-value-pairs以上是关于如何在 VSCode 的 launch.json 中使用自定义环境变量的主要内容,如果未能解决你的问题,请参考以下文章
VSCode仅为许多项目之一创建Launch.json和Tasks.json文件