![]() |
3 days ago | |
---|---|---|
.buildkite | 2 weeks ago | |
.docker | 2 years ago | |
.github | 4 days ago | |
.vscode | 2 weeks ago | |
bench | 4 days ago | |
completions | 2 weeks ago | |
dockerhub | 5 months ago | |
docs | 3 days ago | |
examples | 1 year ago | |
misctools | 2 months ago | |
packages | 3 days ago | |
scripts | 7 days ago | |
src | 4 days ago | |
test | 4 days ago | |
.clangd | 5 months ago | |
.dockerignore | 11 months ago | |
.editorconfig | 1 year ago | |
.gitattributes | 2 weeks ago | |
.gitignore | 2 months ago | |
.gitmodules | 2 months ago | |
.lldbinit | 1 month ago | |
.prettierignore | 4 days ago | |
.prettierrc | 5 months ago | |
.prettierrc-ci | 4 days ago | |
CMakeLists.txt | 1 week ago | |
CODE_OF_CONDUCT.md | 2 years ago | |
CONTRIBUTING.md | 7 days ago | |
Dockerfile | 1 month ago | |
LATEST | 2 weeks ago | |
LICENSE.md | 2 months ago | |
Makefile | 7 days ago | |
README.md | 6 days ago | |
SECURITY.md | 1 year ago | |
build.zig | 1 week ago | |
bun.lockb | 4 days ago | |
bunfig.toml | 7 months ago | |
entitlements.debug.plist | 3 years ago | |
entitlements.plist | 3 years ago | |
jsconfig.json | 4 days ago | |
package.json | 4 days ago | |
root.zig | 8 months ago | |
root_wasm.zig | 1 year ago | |
tsconfig.base.json | 9 months ago | |
tsconfig.json | 9 months ago | |
workspace.code-workspace | 3 years ago |
README.md
Bun
Read the docs →
What is Bun?
Bun is an all-in-one toolkit for JavaScript and TypeScript apps. It ships as a single executable called bun
.
At its core is the Bun runtime, a fast JavaScript runtime designed as a drop-in replacement for Node.js. It's written in Zig and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.
bun run index.tsx # TS and JSX supported out-of-the-box
The bun
command-line tool also implements a test runner, script runner, and Node.js-compatible package manager. Instead of 1,000 node_modules for development, you only need bun
. Bun's built-in tools are significantly faster than existing options and usable in existing Node.js projects with little to no changes.
bun test # run tests
bun run start # run the `start` script in `package.json`
bun install <pkg> # install a package
bunx cowsay 'Hello, world!' # execute a package
Install
Bun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon) and Windows (x64).
Linux users — Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1.
# with install script (recommended)
curl -fsSL https://bun.sh/install | bash
# on windows
powershell -c "irm bun.sh/install.ps1 | iex"
# with npm
npm install -g bun
# with Homebrew
brew tap oven-sh/bun
brew install bun
# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun
Upgrade
To upgrade to the latest version of Bun, run:
bun upgrade
Bun automatically releases a canary build on every commit to main
. To upgrade to the latest canary build, run:
bun upgrade --canary
Quick links
-
Intro
-
Templating
-
Runtime
-
Package manager
-
Bundler
-
Test runner
-
Package runner
-
API
-
Project
Guides
-
Binary
- Convert a Blob to a DataView
- Convert a Blob to a ReadableStream
- Convert a Blob to a string
- Convert a Blob to a Uint8Array
- Convert a Blob to an ArrayBuffer
- Convert a Buffer to a blob
- Convert a Buffer to a ReadableStream
- Convert a Buffer to a string
- Convert a Buffer to a Uint8Array
- Convert a Buffer to an ArrayBuffer
- Convert a DataView to a string
- Convert a Uint8Array to a Blob
- Convert a Uint8Array to a Buffer
- Convert a Uint8Array to a DataView
- Convert a Uint8Array to a ReadableStream
- Convert a Uint8Array to a string
- Convert a Uint8Array to an ArrayBuffer
- Convert an ArrayBuffer to a Blob
- Convert an ArrayBuffer to a Buffer
- Convert an ArrayBuffer to a string
- Convert an ArrayBuffer to a Uint8Array
- Convert an ArrayBuffer to an array of numbers
-
Ecosystem
- Build a frontend using Vite and Bun
- Build an app with Astro and Bun
- Build an app with Next.js and Bun
- Build an app with Nuxt and Bun
- Build an app with Qwik and Bun
- Build an app with Remix and Bun
- Build an app with SolidStart and Bun
- Build an app with SvelteKit and Bun
- Build an HTTP server using Elysia and Bun
- Build an HTTP server using Express and Bun
- Build an HTTP server using Hono and Bun
- Build an HTTP server using StricJS and Bun
- Containerize a Bun application with Docker
- Create a Discord bot
- Deploy a Bun application on Render
- Read and write data to MongoDB using Mongoose and Bun
- Run Bun as a daemon with PM2
- Run Bun as a daemon with systemd
- Server-side render (SSR) a React component
- Use Drizzle ORM with Bun
- Use EdgeDB with Bun
- Use Neon's Serverless Postgres with Bun
- Use Prisma with Bun
- Use React and JSX
- Add Sentry to a Bun app
-
HTTP
- Common HTTP server usage
- Configure TLS on an HTTP server
- fetch with unix domain sockets in Bun
- Hot reload an HTTP server
- Proxy HTTP requests using fetch()
- Send an HTTP request using fetch
- Start a cluster of HTTP servers
- Stream a file as an HTTP Response
- Streaming HTTP Server with Async Iterators
- Streaming HTTP Server with Node.js Streams
- Upload files via HTTP using FormData
- Write a simple HTTP server
-
Install
- Add a dependency
- Add a development dependency
- Add a Git dependency
- Add a peer dependency
- Add a tarball dependency
- Add a trusted dependency
- Add an optional dependency
- Configure a private registry for an organization scope with bun install
- Configure git to diff Bun's lockb lockfile
- Configuring a monorepo using workspaces
- Generate a human-readable lockfile
- Install a package under a different name
- Install dependencies with Bun in GitHub Actions
- Override the default npm registry for bun install
- Using bun install with an Azure Artifacts npm registry
- Using bun install with Artifactory
-
Process
-
Read file
-
Runtime
- Debugging Bun with the VS Code extension
- Debugging Bun with the web debugger
- Define and replace static globals & constants
- Import a JSON file
- Import a TOML file
- Import HTML file as text
- Install and run Bun in GitHub Actions
- Install TypeScript declarations for Bun
- Re-map import paths
- Read environment variables
- Run a Shell Command
- Set a time zone in Bun
- Set environment variables
-
Streams
- Convert a Node.js Readable to a Blob
- Convert a Node.js Readable to a string
- Convert a Node.js Readable to an ArrayBuffer
- Convert a Node.js Readable to JSON
- Convert a ReadableStream to a Blob
- Convert a ReadableStream to a Buffer
- Convert a ReadableStream to a string
- Convert a ReadableStream to a Uint8Array
- Convert a ReadableStream to an array of chunks
- Convert a ReadableStream to an ArrayBuffer
- Convert a ReadableStream to JSON
-
Test
- Bail early with the Bun test runner
- Generate code coverage reports with the Bun test runner
- Mark a test as a "todo" with the Bun test runner
- Migrate from Jest to Bun's test runner
- Mock functions in
bun test
- Re-run tests multiple times with the Bun test runner
- Run tests in watch mode with Bun
- Run your tests with the Bun test runner
- Set a code coverage threshold with the Bun test runner
- Set a per-test timeout with the Bun test runner
- Set the system time in Bun's test runner
- Skip tests with the Bun test runner
- Spy on methods in
bun test
- Update snapshots in
bun test
- Use snapshot testing in
bun test
- Write browser DOM tests with Bun and happy-dom
-
Util
- Check if the current file is the entrypoint
- Check if two objects are deeply equal
- Compress and decompress data with DEFLATE
- Compress and decompress data with gzip
- Convert a file URL to an absolute path
- Convert an absolute path to a file URL
- Detect when code is executed with Bun
- Encode and decode base64 strings
- Escape an HTML string
- Get the absolute path of the current file
- Get the absolute path to the current entrypoint
- Get the current Bun version
- Get the directory of the current file
- Get the file name of the current file
- Get the path to an executable bin file
- Hash a password
- Sleep for a fixed number of milliseconds
-
WebSocket
-
Write file
Contributing
Refer to the Project > Contributing guide to start contributing to Bun.
License
Refer to the Project > License page for information about Bun's licensing.