.env 文件,并提供符合惯用方式的 API,以便以编程方式读取和写入环境变量。你还可以使用 Bun 特有的环境变量来配置 Bun 运行时行为的部分内容。
设置环境变量
Bun 会自动读取以下文件(按优先级升序排列)。.env.env.production,.env.development,.env.test(取决于NODE_ENV的值).env.local
.env
跨平台的 Windows 解决方案
跨平台的 Windows 解决方案
如需跨平台解决方案,请使用 Bun Shell,例如通过 在 Windows 上,通过
bun exec 使用。bun run 调用的 package.json 脚本会自动使用 Bun Shell,因此以下方式同样支持跨平台。package.json
process.env 设置属性,以编程方式设置变量。
手动指定 .env 文件
--env-file 标志会覆盖 Bun 加载的 .env 文件。无论是使用 bun 运行文件,还是运行 package.json 脚本,都可以使用该标志。
禁用自动加载 .env
使用 --no-env-file 可禁用 Bun 自动加载 .env 文件,例如在生产环境或 CI/CD 流程中,如果你希望完全依赖系统环境变量。
bunfig.toml 中禁用此功能:
bunfig.toml
--env-file 传入的文件仍会被加载。
当 Bun 以 node 的身份调用时(例如通过 bun --bun、bunx --bun,或指向 Bun 的 node 符号链接),会禁用自动加载 .env,以匹配 Node.js 的行为。这样,使用自身且感知运行模式的 .env 解析机制的工具(例如 Vite 的 loadEnv)就能正确选择 .env.{mode} 文件,而不会将 Bun 预先填充的值视为由 shell 设置的覆盖值。显式传入的 --env-file 参数仍会生效。
引号
Bun 支持双引号、单引号和模板字符串反引号:.env
扩展
Bun 会自动_扩展_环境变量,因此你可以引用之前定义的变量。.env
.env
$。
.env
dotenv
Bun 会自动读取 .env 文件,因此无需使用 dotenv 和 dotenv-expand。
读取环境变量
从process.env 读取当前环境变量。
Bun.env 和 import.meta.env 暴露这些变量,它们都是 process.env 的别名。
bun --print process.env。
TypeScript
在 TypeScript 中,process.env 的所有属性都被类型定义为 string | undefined。
process.env 和 Bun.env 添加 AWESOME 属性。
配置 Bun
Bun 读取以下环境变量来配置其行为的各个方面。运行时转译器缓存
对于大于 4 KB 的文件,Bun 会将转译后的输出缓存到$BUN_RUNTIME_TRANSPILER_CACHE_PATH 或平台特定的缓存目录中。这可以让使用 Bun 的 CLI 加载得更快。
该缓存是全局的,并在所有项目之间共享;它采用内容寻址,因此不会包含重复条目。可以随时安全地删除缓存,即使 Bun 进程正在运行也不例外。
在使用 Docker 等临时文件系统时,请禁用此缓存。Bun 的 Docker 镜像会自动禁用它。
禁用运行时转译器缓存
要禁用该缓存,将BUN_RUNTIME_TRANSPILER_CACHE_PATH 设置为空字符串或字符串 "0"。
它缓存什么?
缓存内容包括:- 大于 4 KB 的源文件的转译输出。
- 文件转译输出的源映射。
.pile 扩展名。