mit einem Klick
bun
// Use when building, testing, and deploying JavaScript/TypeScript applications. Reach for Bun when you need to run scripts, manage dependencies, bundle code, or test applications with a single unified tool.
// Use when building, testing, and deploying JavaScript/TypeScript applications. Reach for Bun when you need to run scripts, manage dependencies, bundle code, or test applications with a single unified tool.
Create a detailed execution plan/spec/PRD for implementing features or refactors in a codebase, designed around the program's entrypoints, the doors that carry domain intent, by leveraging existing research in the codebase.
Delegate work to builtin or custom subagents with single-agent, chain, parallel, async, forked-context, and intercom-coordinated workflows. Use for parallel codebase discovery, debug-and-fix, refinement, and multi-step tasks where a single parent agent stays in control while specialist subagents contribute locate, analyze, pattern-find, research, debug, or simplify passes.
Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.
Document codebase as-is with research directory for historical context.
Automate browser interactions, test web pages and work with Playwright tests.
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
| name | bun |
| description | Use when building, testing, and deploying JavaScript/TypeScript applications. Reach for Bun when you need to run scripts, manage dependencies, bundle code, or test applications with a single unified tool. |
| metadata | {"mintlify-proj":"bun","version":"1.0","internal":true} |
Bun is a unified JavaScript runtime, package manager, bundler, and test runner written in Zig. It replaces Node.js, npm, esbuild, and Jest with a single fast binary. Key files: bunfig.toml (configuration), bun.lock (lockfile), package.json (project metadata). Primary commands: bun run, bun install, bun build, bun test. Bun is 4x faster than Node.js on startup and 25x faster than npm for installations. Visit https://bun.com/docs for comprehensive documentation.
Use Bun when:
bun run file.ts)bun install, bun add)bun buildbun test)Do not use Bun for: type checking (use tsc separately), generating type declarations, or projects requiring exact Node.js compatibility for native modules.
| Task | Command | Notes |
|---|---|---|
| Run TypeScript file | bun run file.ts | Transpiles on-the-fly; omit run for short form |
| Run package script | bun run dev | Executes script from package.json |
| Install dependencies | bun install | Creates bun.lock lockfile |
| Add package | bun add react | Adds to dependencies; use -d for dev |
| Remove package | bun remove react | Removes from package.json and node_modules |
| Run tests | bun test | Finds *.test.ts, *.spec.ts files automatically |
| Build bundle | bun build ./src/index.ts --outdir ./dist | Bundles with tree-shaking, minification optional |
| Watch mode | bun --watch run file.ts | Re-runs on file changes |
| Create project | bun init | Scaffolds new project with templates |
Located at project root or ~/.bunfig.toml (global). Optional but useful for customization.
[install]
dev = true # Install devDependencies
optional = true # Install optionalDependencies
peer = true # Install peerDependencies
linker = "hoisted" # "hoisted" or "isolated" (pnpm-style)
saveTextLockfile = true # Use text bun.lock instead of binary
[serve]
port = 3000 # Default port for Bun.serve()
[test]
root = "." # Test root directory
coverage = false # Enable coverage reporting
timeout = 5000 # Per-test timeout in ms
preload = ["./setup.ts"] # Scripts to run before tests
[run]
shell = "system" # "system" or "bun" (Windows defaults to "bun")
bun = true # Auto-alias node to bun in scripts
Bun natively handles: .js, .jsx, .ts, .tsx, .json, .jsonc, .toml, .yaml, .html, .css, .wasm, .node. No configuration needed—just import and use.
| API | Purpose | Example |
|---|---|---|
Bun.serve() | Start HTTP server | Bun.serve({ port: 3000, fetch: handler }) |
Bun.file() | Read/write files | await Bun.file("path.txt").text() |
Bun.write() | Write to disk | await Bun.write("out.txt", data) |
Bun.build() | Bundle code | await Bun.build({ entrypoints, outdir }) |
Bun.Transpiler | Transpile code | new Bun.Transpiler({ loader: "tsx" }) |
Bun.spawn() | Run child process | Bun.spawn(["ls", "-la"]) |
| Scenario | Use | Reason |
|---|---|---|
| New monorepo/workspaces | isolated | Prevents phantom dependencies, stricter isolation |
| New single-package project | hoisted | Traditional npm behavior, simpler |
| Existing project (pre-v1.3.2) | hoisted | Backward compatibility |
| Migrating from pnpm | isolated | Matches pnpm's approach |
Set in bunfig.toml: linker = "isolated" or via CLI: bun install --linker isolated
| Use Case | Tool | Why |
|---|---|---|
| Execute TypeScript directly | bun run | Fast transpilation, no output files |
| Prepare for production | bun build | Minification, tree-shaking, bundling |
| Ship single executable | bun build --compile | Creates standalone binary |
| Development server | bun run + Bun.serve() | Hot reload, fast iteration |
| Scenario | Use --concurrent | Reason |
|---|---|---|
| Independent async tests | Yes | Parallel execution speeds up suite |
| Tests with shared state | No | Use test.serial() for order-dependent tests |
| Database/API tests | Maybe | Only if tests don't interfere |
| Unit tests | Yes | Usually safe and faster |
bun init my-app
cd my-app
Choose template: Blank, React, or Library. Creates package.json, tsconfig.json, .gitignore.
bun install
Reads package.json, downloads packages, creates bun.lock. Much faster than npm.
bun add react
bun add -d @types/react typescript
Updates package.json and bun.lock automatically.
# Create index.ts
echo "console.log('Hello Bun!')" > index.ts
# Run it
bun run index.ts
Bun transpiles TypeScript on-the-fly; no build step needed.
// server.ts
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello!");
},
});
console.log(`Listening on ${server.url}`);
bun run server.ts
// math.test.ts
import { test, expect } from "bun:test";
test("2 + 2 = 4", () => {
expect(2 + 2).toBe(4);
});
bun test
Finds and runs all *.test.ts files automatically.
bun build ./src/index.ts --outdir ./dist --minify
Outputs optimized bundle to dist/. Use --target browser|node|bun to control output format.
bun build ./cli.ts --outfile mycli --compile
./mycli
Bundles code + Bun runtime into single executable; no dependencies needed.
postinstall scripts for security. Add trusted packages to trustedDependencies in package.json to allow them.bun run vs bun <script>: If a built-in Bun command exists with the same name, use bun run <script> explicitly to run package.json scripts.bun --watch run file.ts, not bun run file.ts --watch. Flags after the filename are passed to the script itself.@types/bun and add "lib": ["ESNext"] to tsconfig.json compilerOptions.bun.lock by default (not binary bun.lockb). Commit to version control.install.auto = "disable" in bunfig.toml for production to prevent unexpected package downloads.node: module support before relying on Node-specific code.bun build always bundles by default. Use Bun.Transpiler to transpile individual files without bundling.bun build does not type-check. Run tsc --noEmit separately for type validation.peer = false in bunfig.toml to disable.Before submitting work with Bun:
bun install to verify dependencies resolve without errorsbun run <script> to test main entry pointbun test and verify all tests passbun build and check output files exist in outdirbun.lock is committed to version control (not .gitignored)bunfig.toml for any environment-specific settings that should be removednode_modules folder is committed (should be in .gitignore)--production flag if building for deployment: bun install --productionbun run tsc --noEmit (if tsc installed)package.json "type": "module" is set for ESM projectsComprehensive navigation: https://bun.com/docs/llms.txt — Page-by-page listing of all Bun documentation.
Critical pages:
For additional documentation and navigation, see: https://bun.com/docs/llms.txt