docs: `dev --env-file` help/docs say it does not reach tasks, but it does

Abierto
#4,425 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

  • #4473 de @RealBhupesh — cerrado sin fusionar
  • #4478 de @BILLKISHORE — cerrado sin fusionar

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
typescript

Línea de trabajo

Start by reading dev/devSupervisor.ts and the resolveLocalEnvVars → resolveDotEnvVars path mentioned in the issue, then compare it with the dev/deploy/preview CLI help and the three named docs pages. Reproduce with a task reading process.env.PROBE and trigger dev --env-file custom.env; done means the documented contract and actual behavior agree. Two pull requests have already been linked, so check their discussions before starting.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Provide environment information

trigger.dev 4.5.0 (also verified 4.5.9)

Describe the bug

The --env-file option is documented — in the CLI --help for dev/deploy/preview and in the docs pages (cli-dev-commands, cli-deploy-commands, cli-preview-archive) — as:

Load environment variables from a file. This will only hydrate the process.env of the CLI process, not the tasks.

But in dev, the file is passed through to the tasks. DevSupervisor.#getEnvVars() (dev/devSupervisor.ts) builds the run environment from resolveLocalEnvVars(this.options.args.envFile, …):

async #getEnvVars() {
    const environmentVariablesResponse = await this.options.client.getEnvironmentVariables(...);
    return {
        ...resolveLocalEnvVars(this.options.args.envFile, environmentVariablesResponse.success ? ... : {}),
        NODE_ENV: "development",
        ...
    };
}

and resolveLocalEnvVars(envFile, …) → resolveDotEnvVars(undefined, envFile) reads exactly that file and includes it in what the task receives via process.env.

To reproduce
  1. echo "PROBE=from-file" > custom.env
  2. trigger dev --env-file custom.env
  3. In a task: process.env.PROBE
  4. It is from-file — the task does see the --env-file value.

Expected per the docs: the task should NOT see it (docs say the flag only affects the CLI process).

Which is correct?

The behavior (file reaches tasks) is arguably the more useful one — passing --env-file /path/to/empty is a clean way to make the CLI read no ambient .env* files and rely solely on the injected process.env. But the docs and --help text state the opposite, so please either:

  • fix the docs/--help to say --env-file values are included in the task environment, or
  • if the documented behavior is the intended contract, fix dev to not pass envFile into resolveLocalEnvVars.

Either way the code and the docs currently disagree, which makes --env-file hard to reason about.

Additional information

Related: #2999 (the .env vs .env.local precedence bug in the same resolveDotEnvVars path).

Lenguaje dominante
TypeScript
Estrellas
16.5k
Forks
1.5k
Merge medio
1 d 15 h
PR fusionados (30 d)
17

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de triggerdotdev/trigger.dev

Todos los issues de triggerdotdev/trigger.dev

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.