.env 文件,并提供惯用的方式来编程读取和写入环境变量。此外,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 文件
Bun 支持 --env-file 来覆盖要加载的特定 .env 文件。您可以在 bun 运行时运行脚本时或运行 package.json 脚本时使用 --env-file。
禁用自动 .env 加载
使用 --no-env-file 禁用 Bun 的自动 .env 文件加载。这在生产环境或 CI/CD 流水线中很有用,您希望仅依赖系统环境变量。
bunfig.toml 中配置:
bunfig.toml
--env-file 明确提供的环境文件仍会被加载。
引号
Bun 支持双引号、单引号和模板文字反引号:.env
扩展
环境变量会自动_展开_。这意味着您可以在环境变量中引用先前定义的变量。.env
.env
$ 可以禁用此功能。
.env
dotenv
通常,您不再需要 dotenv 或 dotenv-expand,因为 Bun 会自动读取 .env 文件。
读取环境变量
当前环境变量可以通过process.env 访问。
Bun.env 和 import.meta.env 暴露这些变量,这是 process.env 的简单别名。
bun --print process.env。这对于调试很有用。
TypeScript
在 TypeScript 中,process.env 的所有属性都被键入为 string | undefined。
AWESOME 属性到 process.env 和 Bun.env。
配置 Bun
这些环境变量由 Bun 读取并配置其行为的各个方面。| 名称 | 描述 |
|---|---|
NODE_TLS_REJECT_UNAUTHORIZED | NODE_TLS_REJECT_UNAUTHORIZED=0 禁用 SSL 证书验证。这对于测试和调试很有用,但您应该非常谨慎地在生产环境中使用此选项。注意:此环境变量最初由 Node.js 引入,我们保留此名称以兼容。 |
BUN_CONFIG_VERBOSE_FETCH | 如果 BUN_CONFIG_VERBOSE_FETCH=curl,那么 fetch 请求将记录 URL、方法、请求头和响应头到控制台。这对于调试网络请求很有用。这也适用于 node:http。BUN_CONFIG_VERBOSE_FETCH=1 等同于 BUN_CONFIG_VERBOSE_FETCH=curl,只是没有 curl 输出。 |
BUN_RUNTIME_TRANSPILER_CACHE_PATH | 运行时转译器缓存大于 50 kb 的源文件的转译输出。这使得使用 Bun 的 CLI 加载更快。如果设置了 BUN_RUNTIME_TRANSPILER_CACHE_PATH,则运行时转译器将把转译输出缓存到指定目录。如果 BUN_RUNTIME_TRANSPILER_CACHE_PATH 设置为空字符串或字符串 "0",则运行时转译器不会缓存转译输出。如果未设置 BUN_RUNTIME_TRANSPILER_CACHE_PATH,则运行时转译器将把转译输出缓存到特定于平台的缓存目录。 |
TMPDIR | Bun 偶尔需要一个目录来存储捆绑或其它操作期间的中间资产。如果未设置,默认为特定于平台的临时目录:Linux 上为 /tmp,macOS 上为 /private/tmp。 |
NO_COLOR | 如果 NO_COLOR=1,则 ANSI 颜色输出被禁用。 |
FORCE_COLOR | 如果 FORCE_COLOR=1,则强制启用 ANSI 颜色输出,即使设置了 NO_COLOR。 |
BUN_CONFIG_MAX_HTTP_REQUESTS | 控制 fetch 和 bun install 发送的并发 HTTP 请求的最大数量。默认为 256。如果遇到速率限制或连接问题,可以减少此数字。 |
BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD | 如果 BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD=true,则 bun --watch 在重新加载时不会清除控制台 |
DO_NOT_TRACK | 崩溃时禁用上传崩溃报告到 bun.report。在 macOS 和 Windows 上,默认启用崩溃报告上传。否则,截至 2024 年 5 月 21 日尚未发送遥测数据,但我们计划在未来几周内添加遥测数据。如果 DO_NOT_TRACK=1,则自动上传崩溃报告和遥测数据都将禁用。 |
BUN_OPTIONS | 将命令行参数前置到任何 Bun 执行。例如,BUN_OPTIONS="--hot" 使 bun run dev 行为类似于 bun --hot run dev |
运行时转译器缓存
对于大于 50 KB 的文件,Bun 将转译输出缓存到$BUN_RUNTIME_TRANSPILER_CACHE_PATH 或特定于平台的缓存目录中。这使得使用 Bun 的 CLI 加载更快。
此转译器缓存是全局的,并在所有项目之间共享。可以随时安全地删除缓存。这是一个内容寻址缓存,因此永远不会包含重复条目。删除缓存的同时运行 Bun 进程也是安全的。
在使用临时文件系统(如 Docker)时,建议禁用此缓存。Bun 的 Docker 镜像会自动禁用此缓存。
禁用运行时转译器缓存
要禁用运行时转译器缓存,请将BUN_RUNTIME_TRANSPILER_CACHE_PATH 设置为空字符串或字符串 "0"。
它缓存什么?
它缓存:- 大于 50 KB 的源文件的转译输出。
- 文件的转译输出的源码映射
.pile 文件扩展名。