Skip to main content
Bundle JavaScript and TypeScript files into optimized output.
bun build <entrypoint> [...flags]

Quick Start

Bundle a file:
bun build ./index.ts --outdir ./dist
Multiple entry points:
bun build ./src/index.ts ./src/worker.ts --outdir ./dist

Options

--outdir <dir>

Output directory:
bun build ./index.ts --outdir ./build

--outfile <file>

Output file (single entry point):
bun build ./index.ts --outfile ./bundle.js

--minify

Minify output:
bun build ./index.ts --minify

--sourcemap

Generate source maps:
bun build ./index.ts --sourcemap
Options: none, inline, external (default: external)

--target

Target runtime:
bun build ./index.ts --target browser
bun build ./index.ts --target bun
bun build ./index.ts --target node

--format

Output format:
bun build ./index.ts --format esm   # ES modules (default)
bun build ./index.ts --format cjs   # CommonJS
bun build ./index.ts --format iife  # Immediately Invoked Function Expression

--splitting

Code splitting:
bun build ./index.ts --splitting
Generates chunks for shared dependencies.

--external <packages>

External dependencies (not bundled):
bun build ./index.ts --external react --external react-dom

--public-path

Public URL path for assets:
bun build ./index.ts --public-path /assets/

--conditions

Package.json export conditions:
bun build ./index.ts --conditions production

Examples

Frontend Bundle

bun build ./src/app.tsx --outdir ./public --minify --sourcemap

Library Bundle

bun build ./src/index.ts \
  --outfile ./dist/index.js \
  --format esm \
  --minify \
  --external react

Multiple Formats

# ESM
bun build ./src/index.ts --outdir ./dist/esm --format esm

# CommonJS
bun build ./src/index.ts --outdir ./dist/cjs --format cjs

Development vs Production

Development:
bun build ./src/index.ts --outdir ./dist --sourcemap
Production:
bun build ./src/index.ts --outdir ./dist --minify --sourcemap=external

Programmatic API

Use Bun.build() in TypeScript:
const result = await Bun.build({
  entrypoints: ['./index.ts'],
  outdir: './dist',
  minify: true,
  sourcemap: 'external',
});

if (result.success) {
  console.log('Build successful!');
  for (const output of result.outputs) {
    console.log(output.path);
  }
} else {
  console.error('Build failed:');
  for (const message of result.logs) {
    console.error(message);
  }
}
See Bundler API for complete documentation.

Performance

Bun’s bundler is extremely fast:
  • 100x faster than Webpack
  • 10x faster than esbuild
  • Written in Zig for maximum performance
  • Parallel processing
  • Incremental compilation

Next Steps

Bundler API

Complete bundler documentation

Loaders

File type loaders

Plugins

Extend the bundler

Executables

Create standalone executables

Build docs developers (and LLMs) love