Skip to content

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

Description

@petrbela

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions