【Bun中文文档-Runtime】Environment variables

1,018 阅读1分钟

Bun 会自动读取您的.env文件,并提供以编程方式读取和写入环境变量的惯用方法。此外,Bun 特定的环境变量还可以配置 Bun 的运行时行为的某些方面。

设置环境变量

Bun 会自动读取以下文件(按优先级递增的顺序列出)。

  • .env
  • .env.production.env.development.env.test(根据NODE_ENV的值而定)
  • .env.local
FOO=hello
BAR=world

变量还可以通过命令行进行设置。

$ FOO=helloworld bun run dev

或者通过将属性分配给process.env来以编程方式设置。

process.env.FOO = "hello";

dotenv

一般来说,您将不再需要使用dotenv,因为 Bun 会自动读取.env文件。

读取环境变量

当前环境变量可以通过process.env访问。

process.env.API_TOKEN; // => "secret"

Bun 还通过Bun.env公开这些变量,这是process.env的简单别名。

Bun.env.API_TOKEN; // => "secret"

要将当前设置的所有环境变量打印到命令行,请运行bun run env。这对于调试很有用。

$ bun run env
BAZ=stuff
FOOBAR=aaaaaa
<lots more lines>

TypeScript

在 TypeScript 中,process.env的所有属性都被类型化为string | undefined

Bun.env.whatever;
// string | undefined

要获得自动完成并告诉 TypeScript 将变量视为非可选字符串,我们将使用接口合并

declare module "bun" {
  interface Env {
    AWESOME: string;
  }
}

将此行添加到项目中的任何文件中。它将全局添加process.envBun.envAWESOME属性。

process.env.AWESOME; // => string

配置 Bun

这些环境变量由 Bun 读取,并配置其行为的各个方面。

名称描述
TMPDIRBun 在打包或其他操作期间偶尔需要一个目录来存储中间资源。如果未设置,默认为特定于平台的临时目录:Linux 上为 /tmp,macOS 上为 /private/tmp
NO_COLOR如果 NO_COLOR=1,则 禁用 ANSI 颜色输出。
FORCE_COLOR如果 FORCE_COLOR=1,则即使设置了 NO_COLOR,也会强制启用 ANSI 颜色输出。
DO_NOT_TRACK如果 DO_NOT_TRACK=1,则 禁用 分析。Bun 记录捆绑时间(以便我们可以用数据回答问题,"Bun 是否越来越快?")和功能使用情况(例如,"人们是否真正使用宏?")。请求主体大小约为 60 字节,因此数据量不大。相当于 bunfig 中的 telemetry=false