Debug Env
Extensión de VS Code para elegir las variables de entorno justo antes de un debug y aplicarlas a ese proceso. No hace falta reiniciar VS Code: los archivos se leen cuando arranca la sesión.
En GoLand eso está repartido entre el diálogo Environment variables de la run configuration y el plugin EnvFile. Acá las dos cosas son el mismo flujo.
Qué hace al pulsar F5
- Aparece un menú (Escape cancela el debug, para no lanzar el proceso con el entorno equivocado).
- Enter usa el perfil sugerido. También se puede elegir archivos, editar la tabla, pegar un
.env o ir sin variables extra.
- Esas variables se copian a
env de la configuración de debug. Las del menú pisan a las del mismo nombre en launch.json. El resto de launch.json se mantiene.
- El canal de salida Debug Env anota los nombres de las variables, no los valores.
La barra de estado ENV? abre el mismo selector sin iniciar un debug. ENV: nombre significa que el perfil se aplica solo, sin preguntar.
Un compound comparte una sola pregunta. Un attach no se toca. Un test (mode: test o purpose: debug-test) no pregunta: si hay un perfil activo, lo aplica.
Archivos
Se aceptan .env (también export KEY=valor), un objeto JSON plano y un YAML plano KEY: valor. El archivo de más abajo pisa al de arriba. Con Sustituir activo se expanden $VAR, ${VAR}, ${env:VAR}, ${workspaceFolder} y ${workspaceFolderBasename}. Las comillas simples quedan literales.
Las rutas de launch.json aceptan variables de VS Code (${workspaceFolder}). Dentro del archivo de entorno la sintaxis es $VAR, no ${env:VAR} de launch.json (aunque ${env:VAR} también se resuelve).
Perfil en launch.json
{
"name": "search-service",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/search-service/cmd",
"debugEnv": {
"files": ["${workspaceFolder}/search-service/.env", "${workspaceFolder}/search-service/.env.local"],
"profile": "local",
"substitute": true,
"ignoreMissing": false,
"prompt": true
}
}
"debugEnv": false desactiva la extensión para esa configuración. "prompt": false relee los archivos en cada F5 sin mostrar el menú.
Los perfiles (lista de archivos, overrides y claves excluidas) viven en el workspace state de VS Code, en esta máquina. No se commitean. Los secretos conviene dejarlos en un .env que ya esté en .gitignore.
Instalación
Desde tools/vscode-debug-env:
npm install
npm test
npm run compile
Abrí esa carpeta en VS Code y pulsá F5 para correrla en una Extension Development Host.
Para dejarla instalada en VS Code, copiá package.json, README.md, media/ y out/ a:
%USERPROFILE%\.vscode\extensions\matestudio-app.debug-env-0.1.0
y recargá la ventana.
Directorio de entornos
En ajustes, debugEnv.envDirectory apunta a la carpeta donde están todos los env. Puede ser absoluta, relativa al workspace, o usar ${workspaceFolder}.
"debugEnv.envDirectory": "D:/secrets/namu-env"
Al pulsar F5 el menú lista los archivos de esa carpeta y de sus subcarpetas inmediatas. Elegir uno lo usa en ese debug y lo deja como perfil activo. «Elegir archivos…» y el diálogo para agregar archivos también abren ahí.
Ajustes
debugEnv.envDirectory: carpeta cuyos env se muestran al depurar.
debugEnv.promptOnLaunch (default true). El comando de la barra de estado guarda una preferencia de este workspace que pisa al ajuste.
debugEnv.debugTypes: por defecto go, dlv, coreclr, clr, node, pwa-node, python y debugpy.