跳转至

Bun 运行时

Bun 是一个高速的一体化 JavaScript 运行时和工具包:运行时、包管理器、打包器、测试运行器。

何时使用

  • 偏好 Bun:新的 JS/TS 项目、安装/运行速度重要的脚本、在 Bun 运行时上部署、需要单一工具链(运行 + 安装 + 测试 + 构建)的情况。
  • 偏好 Node:最大的生态系统兼容性、假定 Node 的遗留工具,或某个依赖存在已知的 Bun 问题。

使用时机:采用 Bun、从 Node 迁移、编写或调试 Bun 脚本/测试,或在 Vercel 或其他平台上配置 Bun 时。

工作原理

  • 运行时:与 Node 运行时可替换兼容(基于 JavaScriptCore 构建,使用 Zig 实现)。
  • 包管理器:bun install 比 npm/yarn 快得多。锁文件是 bun.lock(文本)(默认)。旧版本使用 bun.lockb(二进制)。
  • 打包器:用于应用和库的内置打包器和转译器。
  • 测试运行器:内置 bun test,具有类似 Jest 的 API。

从 Node 迁移:将 node script.js 替换为 bun run script.js 或 bun script.js。运行 bun install 而不是 npm install。大多数包可以工作。对 npm 脚本使用 bun run。使用 bun x 进行 npx 风格的一次性运行。支持 Node 内置模块。为了提升性能,如果存在 Bun 通道,则优先使用。

Vercel:在项目设置中将运行时设置为 Bun。构建:bun run build 或 bun build ./src/index.ts --outdir=dist。安装:对于可复现的部署,使用 bun install --frozen-lockfile。

示例

运行和安装

# 依存関係をインストール(bun.lockまたはbun.lockbを作成/更新)
bun install

# スクリプトまたはファイルを実行
bun run dev
bun run src/index.ts
bun src/index.ts

脚本和 env

bun run --env-file=.env dev
FOO=bar bun run script.ts

测试

bun test
bun test --watch
// test/example.test.ts
import { expect, test } from "bun:test";

test("add", () => {
  expect(1 + 2).toBe(3);
});

常见问题

  • bun install 会创建 node_modules,但由于大量使用符号链接,结构有所不同。
  • 旧依赖可能存在 Bun 兼容性问题。回退到 Node。
  • 在 Vercel 上使用 Bun 时,必须配置设置和构建命令。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC