核心工具链打包器
打包器
使用 bun build 为浏览器、Bun 或 Node.js 生成可部署产物
最后更新于
先确认是否需要打包
- 直接运行服务端 TypeScript:通常可用
bun run,不必先 bundle。 - 浏览器代码:需要打包、拆分和静态资源处理。
- 发布单文件 CLI / 服务:bundle 可简化分发,但要确认外部依赖和动态文件。
- 框架项目:优先使用框架官方构建命令,除非框架明确支持 Bun bundler。
CLI 示例
bun build ./src/index.ts --outdir ./dist --target bun
bun build ./src/browser.tsx --outdir ./dist --target browser --splitting
bun build ./src/cli.ts --outfile ./dist/cli.js --target node --minify --sourcemapJavaScript API
const result = await Bun.build({
entrypoints: ['./src/index.ts'],
outdir: './dist',
target: 'bun',
minify: true,
sourcemap: 'linked',
});
if (!result.success) {
for (const log of result.logs) console.error(log);
process.exit(1);
}target 决策
| 产物运行在哪里 | target | 注意 |
|---|---|---|
| 浏览器 | browser | 不得泄露服务端环境变量和密钥 |
| Bun | bun | 可以保留 Bun 特有 API |
| Node.js | node | 不要在源码中依赖 Bun.* |
外部依赖
不希望某些包进入 bundle 时,把它们标记为 external,并确保部署环境能安装或提供这些包。包含原生二进制、运行时动态加载或按平台分发的依赖尤其需要验证。
单文件可执行程序
CLI、Agent 工具或固定平台的小型服务可以编译成独立程序:
bun build src/index.ts \
--compile \
--target=bun-linux-x64 \
--outfile=dist/service交叉编译不等于目标平台验证。动态库、CA 证书、时区数据、子进程、外部文件和原生依赖仍应在目标 OS/CPU 上启动和测试;签名、SBOM 与发布校验也由项目负责。
发布检查
bun build ./src/index.ts --outdir ./dist --target bun --sourcemap
bun ./dist/index.js至少在与生产相同的操作系统、架构和 Bun 版本上运行一次产物。不要只以“构建成功”代替运行验证。