Support environment variable placeholders in configuration files
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
Línea de trabajo
Empieza rastreando la carga de configuración para devproxyrc.json y los archivos de configuración de los plugins; después, lee ProxyUtils.ReplaceVariables, IProxyConfiguration.Env y la ruta de reemplazo existente de MinimalPermissionsPlugin. Verifica cómo se representan los valores de entorno y la sección de configuración env antes de decidir dónde debe realizarse la resolución. La tarea está terminada cuando los marcadores de posición ${VAR_NAME} se resuelven de forma coherente en los archivos de configuración mostrados sin requerir un script de reescritura, con cobertura para marcadores de posición incrustados como la URL del issuer.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Dev Proxy config files (devproxyrc.json and plugin config files like CrudApiPlugin API files) don't support environment variable placeholders. This means values that vary per environment — like Entra app client IDs or tenant IDs — must be hardcoded in config files, or users need to write scripts to patch them before running Dev Proxy.
Example: the workaround today
In the da-ristorante-api-devproxy-entra sample, we need to inject ENTRA_APP_CLIENT_ID and ENTRA_APP_TENANT_ID into the CrudApiPlugin API files. Because Dev Proxy doesn't support this, the sample includes a Node.js script that reads .env.local and rewrites the JSON config files before each run.
The config file looks like this:
{
"entraAuthConfig": {
"audience": "<ENTRA_APP_CLIENT_ID>",
"issuer": "https://login.microsoftonline.com/<ENTRA_APP_TENANT_ID>/v2.0"
}
}
And the script manually replaces those placeholders with values from env files. This works but adds friction — extra tooling, an extra build step, and mutated config files that can accidentally get committed.
What I'd like to see
Support for environment variable references in config files, for example:
{
"entraAuthConfig": {
"audience": "${ENTRA_APP_CLIENT_ID}",
"issuer": "https://login.microsoftonline.com/${ENTRA_APP_TENANT_ID}/v2.0"
}
}
When Dev Proxy loads a config file, it would resolve ${VAR_NAME} placeholders against environment variables (or the env config section).
Why this seems feasible
Dev Proxy already has closely related infrastructure:
- Path tokens:
~appFolderand~dataFolderare resolved viaProxyUtils.ReplacePathTokenswhen loading config/plugin paths @dynamictokens: used in mock responses and rate limiting headers, resolved at runtimeProxyUtils.ReplaceVariables: a general-purpose string replacement utility that replaces variable references in a string given a dictionary of valuesIProxyConfiguration.Env: the proxy configuration already exposes aDictionary<string, string> EnvpropertyMinimalPermissionsPluginalready usesProxyUtils.ReplaceVariables(fileContents, ProxyConfiguration.Env, v => $"{{{v}}}")to resolve{VAR}placeholders in OpenAPI spec files
The pattern is already proven in plugins — it just needs to be applied when loading configuration files too.
Benefits
- No more wrapper scripts to inject environment-specific values
- Config files stay clean and committable (no secrets, no environment-specific values)
- Consistent with how other tools handle this (Docker Compose, Azure Pipelines, GitHub Actions, etc.)
- Works naturally with
.envfiles and CI/CD environments
- Lenguaje dominante
- C#
- Estrellas
- 833
- Forks
- 90
- Merge medio
- 18 h 41 min
- PR fusionados (30 d)
- 45
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dotnet/dev-proxy
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
waiting for response
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
dotnet/dev-proxy#1914 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
MockStdioResponsePlugin: @stdin.body.id placeholder fails to resolve when messages arrive back-to-back after an id-less messageQuizá libre de nuevo @garrytrinder la tomó hace 85 días y no hay ningún pull request abierto. Abierto
dotnet/dev-proxy#1757 · 1 reacción · 2 asignados ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
Todos los issues de dotnet/dev-proxy
Issues similares
-
S: Untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
space-wizards/space-station-14#46357 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
MicrosoftLearning/PL-400_Microsoft-Power-Platform-Developer#231 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
joinrpg/joinrpg-net#5313 ·
Los mantenedores suelen responder en 1 día
-
[12.x] FixIncorrectOwnerIdRelationships can delete legitimate library roots when UserView shares the same pathPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día