deno.com
本页内容

环境变量

在 Deno 中使用环境变量有几种方法

内置的 Deno.env 方法 跳转到标题

Deno 运行时通过 Deno.env 提供对环境变量的内置支持。

Deno.env 具有 getter 和 setter 方法。以下是示例用法

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

.env 文件 跳转到标题

Deno 也支持 .env 文件。您可以使用 --env-file 标志告诉 Deno 从 .env 读取环境变量,例如

deno run --env-file main.ts

这将从当前工作目录或包含 .env 文件的第一个父目录中读取 .env 文件。如果您想从不同的文件加载环境变量,可以将其指定为该标志的参数。

您可以传递多个 --env-file 标志(例如,deno run --env-file=.env.one --env-file=.env.two --allow-env <script>)以从多个文件中加载变量。

注意

当单个 .env 文件中存在相同环境变量的多个声明时,第一个出现的值将被应用。但是,如果相同的变量在多个 .env 文件中定义(使用多个 --env-file 参数),则来自最后一个指定文件的值优先。这意味着列出的最后一个 .env 文件中找到的第一个出现的值将被应用。

或者,标准库中的 dotenv 包也将从 .env 加载环境变量。

假设您有一个 .env 文件,内容如下

GREETING="Hello, world."

导入 load 模块以从 .env 文件自动导入到进程环境中。

import "jsr:@std/dotenv/load";

console.log(Deno.env.get("GREETING")); // "Hello, world."

有关 .env 处理的更多文档可以在 @std/dotenv 文档中找到。

运行命令时设置变量 跳转到标题

与其他 CLI 命令一样,您可以在运行命令之前设置环境变量,如下所示

MY_VAR="my value" deno run main.ts

这在您希望根据环境变量调整任务时非常有用,并且可以与 deno task 命令结合使用,如下所示

deno.json
{

  ...
  
  "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 跳转到标题

Deno 标准库有一个用于解析命令行参数的 std/cli 模块。请参阅该模块的文档和示例。

特殊环境变量 跳转到标题

Deno 运行时有这些特殊环境变量。

名称 描述
DENO_AUTH_TOKENS 用于从私有仓库获取远程模块时使用的 bearer token 和主机名的分号分隔列表
(例如 abcde12345@deno.land;54321edcba@github.com
DENO_TLS_CA_STORE 逗号分隔的、依赖顺序的证书存储列表。
可能的值:system, mozilla。默认为 mozilla
DENO_CERT 从 PEM 编码的文件加载证书颁发机构
DENO_COVERAGE_DIR 设置收集覆盖率配置数据的目录。此选项仅适用于 deno test 子命令
DENO_DIR 设置缓存目录
DENO_INSTALL_ROOT 设置 deno install 的输出目录(默认为 $HOME/.deno/bin
DENO_REPL_HISTORY 设置 REPL 历史文件路径。当值为为空时,历史文件将被禁用
(默认为 $DENO_DIR/deno_history.txt
DENO_NO_PACKAGE_JSON 禁用 package.json 的自动解析
DENO_NO_PROMPT 设置为禁用访问时的权限提示
(替代在调用时传递 --no-prompt
DENO_NO_UPDATE_CHECK 设置为禁用检查是否有新的 Deno 版本可用
DENO_V8_FLAGS 设置 V8 命令行选项
DENO_JOBS 与测试子命令的 --parallel 标志一起使用的并行工作者数量。
默认为可用 CPU 数量。
DENO_WEBGPU_TRACE 使用 WebGPU API 时,输出 WGPU 跟踪 的目录路径
DENO_WEBGPU_BACKEND 选择 WebGPU 将使用的后端,或按偏好顺序排列的逗号分隔后端列表。可能的值为 vulkandx12metalopengl
HTTP_PROXY HTTP 请求(模块下载、fetch)的代理地址
HTTPS_PROXY HTTPS 请求(模块下载、fetch)的代理地址
NPM_CONFIG_REGISTRY 用于 npm 注册表的 URL。
NO_COLOR 设置为禁用颜色
NO_PROXY 不使用代理的主机(模块下载、fetch)的逗号分隔列表

您找到所需内容了吗?

隐私政策