mcpField
B
bun

bun

github.com/itechmeat开发2388 次安装2 周前更新
代码仓库

关于 bun

bun 是面向开发者的一体化 JavaScript 和 TypeScript 工具包,集运行时、包管理器、测试运行器和打包器于一体。它还提供 HTTP 服务、存储和数据库访问等 API。

主要功能

  1. 01JavaScript 和 TypeScript 运行时
  2. 02安装与管理软件包
  3. 03内置测试运行器和打包器
  4. 04HTTP 与 WebSocket API
  5. 05访问 SQLite、S3 和 Redis

适用场景

  1. 01无需单独构建步骤运行 TypeScript
  2. 02安装和维护项目依赖
  3. 03测试和打包 JavaScript 项目
  4. 04构建使用 HTTP 或 WebSocket 的服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/itechmeat/llm-code --skill bun

安装后在 Claude Code 中输入/bun确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
bunfig.md
cc.md
development.md
env.md
fetch.md
file-io.md
file-system-router.md
http-server.md
module-system.md
native-interop.md
networking-low-level.md
nodejs-compat.md
package-manager.md
plugins.md
project-scaffolding.md
redis.md
s3.md
shell.md
spawn.md
sqlite.md
transpiler.md
typescript-jsx.md
utilities.md
websockets.md
webview.md
workers.md

详细介绍

Bun

一体化 JavaScript/TypeScript 工具包:运行时、包管理器、测试运行器、打包器。

快速导航

主题参考资料
包管理器references/package-manager.md
项目搭建references/project-scaffolding.md
开发references/development.md
模块系统references/module-system.md
TypeScript 和 JSXreferences/typescript-jsx.md
配置references/bunfig.md
HTTP 服务references/http-server.md
浏览器自动化references/webview.md
WebSocketreferences/websockets.md
文件 I/Oreferences/file-io.md
SQLitereferences/sqlite.md
S3 存储references/s3.md
Redisreferences/redis.md
底层网络references/networking-low-level.md
Fetch APIreferences/fetch.md
Shell 脚本references/shell.md
启动进程references/spawn.md
Workerreferences/workers.md
原生 FFIreferences/native-interop.md
C/C++ 编译references/cc.md
转译器references/transpiler.md
插件references/plugins.md
文件系统路由references/file-system-router.md
环境变量references/env.md
实用工具references/utilities.md
Node.js 兼容性references/nodejs-compat.md

何时使用 Bun

  • 无需构建步骤即可运行 TypeScript/JSX
  • 使用原生路由的高速 HTTP 服务
  • 使用原生输入事件进行无头浏览器自动化
  • SQLite 数据库(内嵌,无依赖)
  • WebSocket 服务端/客户端
  • 兼容 S3 的存储(AWS、R2、MinIO)
  • Redis 缓存/发布订阅
  • 跨平台 Shell 脚本
  • 进程内 cron 调度
  • Markdown 解析(v1.3.8+)
  • 通过 FFI 调用原生库

核心优势

  • 启动速度比 Node.js 快 4 倍
  • 原生支持 TypeScript/JSX——无需 tsconfig
  • ESM + CommonJS——两者均可无缝运行
  • 内置 Web API——fetch、WebSocket 等
  • 安装速度比 npm 快 30 倍

快速开始

# Run TypeScript directly
bun run index.ts

# Install packages
bun install

# Run package.json script
bun run dev

# Execute package binary
bunx cowsay "Hello"

# Run tests
bun test

# Build for production
bun build ./index.ts --outdir ./dist

# Bundle analysis for LLMs (v1.3.8+)
bun build ./index.ts --metafile-md --outdir ./dist

关键规则

不要应使用
http.createServer()Bun.serve()
fs.readFileSync()Bun.file().text()
better-sqlite3bun:sqlite
child_process.exec()Bun.$ 或 Bun.spawn()
dotenv内置 .env 支持

版本亮点(1.4.x)

  • Rust 重写:首次发布 Rust 移植版本。峰值内存更低(使用 mimalloc 分配器,负载下减少 13-48%)、启动速度约快 2 倍、空闲 CPU 占用降低 5 倍,并且 Node.js 测试套件中通过的测试多出 1,500 多项。
  • HTTP/2 和 HTTP/3:Bun.serve() 通过 TLS 上的 ALPN 在同一端口提供 HTTP/1.1 和 HTTP/2 服务(v1.4.1);HTTP/3 可通过 http3: true 实验性启用。fetch() 可在功能标志启用后使用 HTTP/2/3 客户端。
  • 提供静态目录服务:支持 routes: { "/static/*": { dir: "./public" } },并提供 sendfile、ETag、Range、条件请求和 index.html。
  • CLI:使用 bun run --parallel 并发运行脚本;使用 bun audit fix、bun dedupe、bun prune、bun pm diff、bun pm licenses 维护软件包。
  • bun test:支持 --parallel、--isolate、--shard=M/N、--timings、--changed(基于差异)、--retry 和 jest.useFakeTimers()。
  • bun build:内置 React Compiler(--react-compiler)、优化 barrel 导入、通过 export * as 和动态 import() 实现 tree-shaking、--min-chunk-size 以及模块预加载。
  • bun install:支持 --linker=isolated 全局虚拟存储、--offline / --prefer-offline、bun add --catalog、嵌套 overrides 和 selfContained 工作区。
  • 新增运行时 API:Bun.Terminal(PTY)、Bun.Archive(tar)、Bun.JSON5/JSONL/JSONC/XML/TOML 解析器、流式 Bun.write(path, response)、WebSocket.pause()/resume()、crypto.argon2,以及 crypto.subtle 中的后量子 ML-DSA/ML-KEM。

版本亮点(1.3.14)

  • Bun.Image:内置常见格式的图像解码、转换和编码,无需 npm 依赖或原生插件构建步骤。
  • 测试工作流:1.3.13 系列改进了针对变更文件运行测试时的依赖感知筛选,这对依赖局部本地验证的场景很重要。
  • 补丁版本运行时改进:1.3.13-1.3.14 在 1.3.12 WebView/cron/Markdown 版本系列的基础上,继续进行兼容性和性能改进。

必备示例

HTTP 服务
Bun.serve({
  port: 3000,
  fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/api/data") {
      return Response.json({ ok: true });
    }
    return new Response("Not Found", { status: 404 });
  },
});
文件操作
// Read
const content = await Bun.file("data.txt").text();

// Write
await Bun.write("output.txt", "Hello World");

// JSON
const config = await Bun.file("config.json").json();
SQLite
import { Database } from "bun:sqlite";

const db = new Database("app.db");
db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");

const insert = db.prepare("INSERT INTO users (name) VALUES (?)");
insert.run("Alice");

const users = db.query("SELECT * FROM users").all();
WebSocket 服务
Bun.serve({
  fetch(req, server) {
    if (server.upgrade(req)) return;
    return new Response("Upgrade failed", { status: 400 });
  },
  websocket: {
    message(ws, message) {
      ws.send(`Echo: ${message}`);
    },
  },
});
Shell 命令
import { $ } from "bun";

// Simple command
const files = await $`ls -la`.text();

// With variables (auto-escaped)
const name = "my file.txt";
await $`cat ${name}`;

// Piping
await $`cat data.csv | grep "pattern" | wc -l`;
S3 存储
import { s3 } from "bun";

// Upload
await s3.file("uploads/doc.pdf").write(data);

// Download
const content = await s3.file("uploads/doc.pdf").text();

// Presigned URL
const url = s3.presign("uploads/doc.pdf", { expiresIn: 3600 });
Redis
import { redis } from "bun";

await redis.set("key", "value");
const value = await redis.get("key");
await redis.expire("key", 3600);
测试
import { expect, test, describe } from "bun:test";

describe("math", () => {
  test("2 + 2 = 4", () => {
    expect(2 + 2).toBe(4);
  });
});

配置(bunfig.toml)

[run]
watch = true

[install]
registry = "https://registry.npmjs.org"

[test]
coverage = true

环境变量

# .env files loaded automatically
DATABASE_URL=postgres://localhost/mydb
// Access
Bun.env.DATABASE_URL;
process.env.DATABASE_URL;
import.meta.env.DATABASE_URL;

链接

评论

支持 Markdown