Claude-skills bun-runtime
Use for Bun runtime, bunfig.toml, watch/hot modes, env vars, CLI flags, and module resolution.
install
source · Clone the upstream repo
git clone https://github.com/secondsky/claude-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/secondsky/claude-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/bun/skills/bun-runtime" ~/.claude/skills/secondsky-claude-skills-bun-runtime && rm -rf "$T"
manifest:
plugins/bun/skills/bun-runtime/SKILL.mdsource content
Bun Runtime
Bun is a fast all-in-one JavaScript runtime built on JavaScriptCore (Safari's engine). It provides 4x faster startup than Node.js on Linux.
Quick Start
# Run a file bun run index.ts bun index.ts # shorthand # Run with watch mode bun --watch run index.ts # Run package.json script bun run dev # Run with hot reloading bun --hot run server.ts
Core CLI Flags
| Flag | Purpose |
|---|---|
| Restart on file changes |
| Hot module replacement (preserves state) |
| Reduce memory usage (slower GC) |
| Enable debugger |
| Load modules before execution |
| Load specific .env file |
| Evaluate code string |
Running Files
Bun transpiles TypeScript and JSX on-the-fly:
bun run index.js bun run index.ts bun run index.jsx bun run index.tsx
Important: Put Bun flags immediately after
bun:
bun --watch run dev # Correct bun run dev --watch # Wrong - flag passed to script
Package.json Scripts
# Run script bun run dev bun dev # shorthand (if no Bun command conflicts) # List available scripts bun run # Run with Bun instead of Node bun run --bun vite
Bun respects lifecycle hooks (
preclean, postclean, etc.).
Watch Mode vs Hot Reloading
| Mode | Flag | Behavior |
|---|---|---|
| Watch | | Full process restart on changes |
| Hot | | Replace modules, preserve state |
# Watch mode - full restart bun --watch run server.ts # Hot reloading - preserves connections/state bun --hot run server.ts
Environment Variables
Bun automatically loads
.env files:
# Loads automatically: .env, .env.local, .env.development bun run index.ts # Specify env file bun --env-file .env.production run index.ts # Disable auto-loading # In bunfig.toml: env = false
Access in code:
const apiKey = process.env.API_KEY; const bunEnv = Bun.env.NODE_ENV;
Globals Available
| Global | Source | Notes |
|---|---|---|
| Bun | Main API object |
| Node.js | Binary data |
| Node.js | Process info |
| Web | HTTP requests |
| Web | HTTP types |
| Web | WebSocket client |
| Web | Cryptography |
| Web | Logging |
| Node.js | Current directory |
| Node.js | Current file |
Preload Scripts
Load modules before your main script:
bun --preload ./setup.ts run index.ts
Or in
bunfig.toml:
preload = ["./setup.ts"]
Use cases: polyfills, global setup, instrumentation.
Stdin Execution
# Pipe code to Bun echo "console.log('Hello')" | bun run - # Redirect file bun run - < script.js
Workspaces & Monorepos
# Run script in specific packages bun run --filter 'pkg-*' build # Run in all workspaces bun run --filter '*' test
Debugging
# Start debugger bun --inspect run index.ts # Wait for debugger connection bun --inspect-wait run index.ts # Break on first line bun --inspect-brk run index.ts
Connect via Chrome DevTools or VS Code.
Common Errors
| Error | Cause | Fix |
|---|---|---|
| Missing dependency | Run |
| Using await outside async | Wrap in async function or use |
| Flag in wrong position | Put flag before |
When to Load References
Load
references/bunfig.md when:
- Configuring bunfig.toml
- Setting up test configuration
- Configuring package manager behavior
- Setting JSX options
Load
references/cli-flags.md when:
- Need complete CLI flag reference
- Configuring advanced runtime options
- Setting up debugging
Load
references/module-resolution.md when:
- Troubleshooting import errors
- Configuring path aliases
- Understanding Bun's resolution algorithm