mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-05 00:33:27 +08:00
3.0 KiB
3.0 KiB
name, description, origin
| name | description | origin |
|---|---|---|
| bun-runtime | Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel support. | ECC |
Bun Runtime
Bun is a fast all-in-one JavaScript runtime and toolkit: runtime, package manager, bundler, and test runner. Use this skill when working in or migrating to Bun.
Core Concepts
- Runtime: Drop-in Node-compatible runtime (built on JavaScriptCore, implemented in Zig).
- Package manager:
bun installis significantly faster than npm/yarn; lockfile isbun.lockb. - Bundler: Built-in bundler and transpiler for apps and libraries.
- Test runner: Built-in
bun testwith Jest-like API.
When to Use Bun vs Node
- Prefer Bun for: new JS/TS projects, scripts where install/run speed matters, Vercel deployments with Bun runtime, and when you want a single toolchain (run + install + test + build).
- Prefer Node for: maximum ecosystem compatibility, legacy tooling that assumes Node, or when a dependency has known Bun issues.
Quick Reference
Run and install
# Install dependencies (creates/updates bun.lockb)
bun install
# Run a script (package.json "scripts" or direct file)
bun run dev
bun run src/index.ts
# Run a file directly
bun src/index.ts
Scripts and env
# Load .env and run
bun run --env-file=.env dev
# Inline env
FOO=bar bun run script.ts
Testing
# Run tests (Jest-like API)
bun test
# Watch mode
bun test --watch
// test/example.test.ts
import { expect, test } from "bun:test";
test("add", () => {
expect(1 + 2).toBe(3);
});
API (runtime)
// File I/O (Bun-native, fast)
const file = Bun.file("package.json");
const json = await file.json();
// HTTP server
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello");
},
});
Migration from Node
- Replace
node script.jswithbun run script.jsorbun script.js. - Run
bun installin place ofnpm install; most packages work. If something fails, trybun install --backend=hardlinkor report upstream. - Use
bun runfor npm scripts;bun xfor npx-style one-off runs (e.g.bun x prisma generate). - Node built-ins (
fs,path,http, etc.) are supported; prefer Bun APIs where they exist for better performance.
Vercel and deployment
- Vercel supports the Bun runtime. Set runtime to Bun in project settings or use the Bun build preset where available.
- Build command: often
bun run buildorbun build ./src/index.ts --outdir=dist. - Install command:
bun install --frozen-lockfilefor reproducible deploys.
Best Practices
- Use
bun.lockband commit it for reproducible installs. - Prefer
bun runfor scripts so env and lifecycle are consistent. - For TypeScript, Bun runs
.tsnatively; no separatets-nodeneeded. - Keep dependencies up to date; Bun and the ecosystem evolve quickly.
When to Use This Skill
Use when: adopting Bun, migrating from Node, writing or debugging Bun scripts/tests, or configuring Bun on Vercel or other platforms.