Skip to main content
将 --define 传递给 bun build 或 bun build --compile,即可将构建时常量注入应用程序。您可以使用它将构建版本、时间戳或配置标志等元数据直接嵌入编译后的可执行文件中。
terminal

为什么使用构建时常量?

Bun 会将构建时常量直接嵌入编译后的代码中,使其具有以下特点:
  • 零运行时开销 – 不需要环境变量查找或文件读取
  • 不可变 – 值在编译时烘焙进二进制文件
  • 可优化 – 未使用的分支可以被死代码消除
  • 安全 – 无需管理外部依赖或配置文件
构建时常量类似于 C/C++ 中的 gcc -D 或 #define,但适用于 JavaScript/TypeScript。

基本用法

使用 bun build

terminal

使用 bun build --compile

terminal

JavaScript API

build.ts

常见用例

版本信息

将版本和构建元数据直接嵌入可执行文件:

功能开关

使用构建时常量启用或禁用功能:
src/app.ts

配置

在构建时替换配置对象:
src/app.ts

高级用法

不同环境的构建

为不同环境创建不同的可执行文件:

使用 Shell 命令生成动态值

通过 Shell 命令生成构建时常量:

构建自动化脚本

创建一个注入构建元数据的构建脚本:

重要注意事项

值的格式

值可以是 JSON、标识符或属性路径,例如 globalThis 或 console.log。Bun 会解析每个值,并将其作为 JavaScript 表达式内联:

属性键名

键也可以是属性访问模式,而不仅限于普通标识符:
使用此功能可以在构建时内联环境变量:

TypeScript 声明

对于 TypeScript 项目,声明常量以避免类型错误:

跨平台兼容性

针对多个平台构建时,常量的用法相同:

相关链接