跳转至内容
There is a version suitable for your browser's language settings. Would you like to go to the english language of the site?
主页文档

Bun

H1

Bun 是 Milkio 的默认运行时环境。作为一款快速的 JavaScript 运行时,它与 Node.js 兼容,并且支持直接运行 TypeScript 代码。

快速开始

在创建应用时,选择 bun 作为运行时环境。

终端窗口
bun create milkio

部署指南

你可以在服务器上直接部署你的应用,但我们更推荐你使用 Kubernetes 或一些支持容器的 Serverless 平台。如 Google Cloud RunAWS LambdaTencent Cloud SCFAlibaba Cloud FC 等。

你也可以不使用 Bun,尝试一些使用定制运行时的 Serverless 平台,如 Cloudflare Workers 或 Vercel 等。这些平台要比 Kubernetes 或容器方案在部署体验上更简单。但是,在兼容性上,它们往往有所限制,例如,你不能够使用绝大部分的 Node.js 或 Bun 的功能。

打包

你可以使用 bun 命令来打包你的应用程序。尽管 Bun 是专为 JavaScript 设计的运行时,但它与 Node.js 保持了良好的兼容性。因此,和你在使用 Node.js 一样,都会执行你 /package.json 中的脚本。

终端窗口
bun run build

这个命令会自动调用 /package.json 文件中 scripts 部分定义的 build 脚本。默认情况下,该命令如下所示:

终端窗口
bun build ./run-serve.ts --splitting --sourcemap=inline --outdir=./dist --target=bun --minify

执行后,它将在你的工程目录中创建一个 /dist 文件夹,其中包含了压缩和优化后的代码。将这个目录下的所有文件部署到服务器上,然后运行以下命令即可启动你的应用程序:

终端窗口
bun run run-serve.js

使用 Docker 部署

Docker 是一个虚拟容器。我们可以通过编写 Dockerfile 文件,将代码和环境打包成一个镜像,并随时将镜像以虚拟容器的形式运行。

# ------ 阶段 0: 生成、迁移数据库、打包可执行文件 ------
FROM oven/bun:debian as builder
ENV NODE_VERSION 22.1.0
WORKDIR /root/workspace/
COPY ./package.json .
COPY ./bun.lockb .
RUN chmod -R u=rwx . && bun i --no-cache
COPY . .
# 删除本地开发时使用的环境变量
RUN rm -f .env \
# 生成
&& bun run milkio gen \
# 打包出可执行文件
&& bun run build
# ------ 阶段 1: 将制品生成为最终镜像 ------
FROM oven/bun:slim as prod
WORKDIR /root/workspace/
COPY --from=0 /root/workspace/dist/* ./
RUN chmod -R u=rwx . /root/workspace/
CMD ["bun", "run", "run-serve.js"]

这份 Dockerfile 文件经过了精心优化。先安装依赖,再复制代码,可以使在依赖部分被缓存起来,加快每次构建镜像的速度。