There are a few ways to use environment variables in Deno:
The Deno runtime offers built-in support for environment variables with Deno.env.
Deno.env has getter and setter methods. Here is example usage:
Deno.env.set("FIREBASE_API_KEY", "examplekey123");
Deno.env.set("FIREBASE_AUTH_DOMAIN", "firebasedomain.com");
console.log(Deno.env.get("FIREBASE_API_KEY")); // examplekey123
console.log(Deno.env.get("FIREBASE_AUTH_DOMAIN")); // firebasedomain.com
console.log(Deno.env.has("FIREBASE_AUTH_DOMAIN")); // true
Deno also supports .env files. You can tell Deno to read environment variables from .env with the --env-file flag, for example:
deno run --env-file main.ts
This will read the .env file from the current working directory or the first parent directory that contains one. If you want to load environment variables from a different file, you can specify that file as a parameter to the flag.
You can pass multiple --env-file flags (e.g., deno run --env-file=.env.one --env-file=.env.two --allow-env <script>) to load variables from multiple files.
When multiple declarations for the same environment variable exist within a single .env file, the first occurrence is applied. However, if the same variable is defined across multiple .env files (using multiple --env-file arguments), the value from the last file specified takes precedence. This means that the first occurrence found in the last .env file listed will be applied.
Alternately, the dotenv package in the standard library will load environment variables from .env as well.
Let's say you have an .env file that looks like this:
GREETING="Hello, world."
Import the load module to auto-import from the .env file and into the process environment.
import "jsr:@std/dotenv/load";
console.log(Deno.env.get("GREETING")); // "Hello, world."
Further documentation for .env handling can be found in the @std/dotenv documentation.
As with other CLI commands, you can set environment variables before running a command like so:
MY_VAR="my value" deno run main.ts
This can be useful when you want to vary a task based on an environment variable, and can be helpfully combined with deno task commands like so:
{
...
"tasks": {
"build:full": {
"description": "Build the site with all features",
"command": "BUILD_TYPE=FULL deno run main.ts"
},
"build:light": {
"description": "Build the site without expensive operations",
"command": "BUILD_TYPE=LIGHT deno run main.ts"
}
}
}
std/cli The Deno Standard Library has a std/cli module for parsing command line arguments. Please refer to the module for documentation and examples.
The Deno runtime has these special environment variables.
| name | description |
|---|---|
| DENO_AUTH_TOKENS | A semi-colon separated list of bearer tokens and hostnames to use when fetching remote modules from private repositories (e.g. [email protected];[email protected]) |
| DENO_TLS_CA_STORE | Comma-separated list of order dependent certificate stores. Possible values: system, mozilla. Defaults to mozilla. |
| DENO_CERT | Load certificate authority from PEM encoded file |
| DENO_COVERAGE_DIR | Set the directory for collecting coverage profile data. This option only works for deno test subcommand. |
| DENO_DIR | Set the cache directory |
| DENO_INSTALL_ROOT | Set deno install's output directory (defaults to $HOME/.deno/bin) |
| DENO_REPL_HISTORY | Set REPL history file path History file is disabled when the value is empty (defaults to $DENO_DIR/deno_history.txt) |
| DENO_NO_PACKAGE_JSON | Disables auto-resolution of package.json
|
| DENO_NO_PROMPT | Set to disable permission prompts on access (alternative to passing --no-prompt on invocation) |
| DENO_NO_UPDATE_CHECK | Set to disable checking if a newer Deno version is available |
| DENO_V8_FLAGS | Set V8 command line options |
| DENO_JOBS | Number of parallel workers used for the --parallel flag with the test subcommand.Defaults to number of available CPUs. |
| DENO_WEBGPU_TRACE | Path to a directory to output a WGPU trace to when using the WebGPU API |
| DENO_WEBGPU_BACKEND | Select the backend WebGPU will use, or a comma separated list of backends in order of preference. Possible values are vulkan, dx12, metal, or opengl
|
| HTTP_PROXY | Proxy address for HTTP requests (module downloads, fetch) |
| HTTPS_PROXY | Proxy address for HTTPS requests (module downloads, fetch) |
| NPM_CONFIG_REGISTRY | URL to use for the npm registry. |
| NO_COLOR | Set to disable color |
| NO_PROXY | Comma-separated list of hosts which do not use a proxy (module downloads, fetch) |
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/env_variables