개요

Bun은 JavaScript/TypeScript 올인원 런타임으로, Node.js와 Deno의 대안입니다. Zig와 JavaScriptCore(Safari 엔진)로 작성되어 극한의 속도를 추구하며, 런타임·번들러·패키지 매니저·테스트 러너를 하나로 통합합니다.

올인원 구성

기능대체 대상명령어
런타임Node.js, Denobun run index.ts
패키지 매니저npm, yarn, pnpmbun install
번들러Webpack, esbuild, Vitebun build
테스트 러너Jest, Vitestbun test
TypeScript 실행ts-node, tsx네이티브 (설정 불필요)
JSX/TSXBabel, SWC네이티브
.env 로딩dotenv네이티브
Watch 모드nodemonbun --watch

속도 비교

Node.js = 1.0x 기준

작업Node.jsBun
install (패키지 설치)1.0x10~30x
서버 시작1.0x4~5x
FFI (네이티브 호출)1.0x100x+
SQLite 읽기1.0x4~5x
번들링1.0x (Webpack)~50x
테스트 실행1.0x (Jest)10~30x
  • 왜 빠른가: V8 대신 JavaScriptCore (JIT 최적화 다름) + Zig로 시스템 레이어 최적화
  • v1.3.10: 문자열 슬라이싱 168배 성능 향상 (JSC 업그레이드)

주요 기능

패키지 매니저

bun init                    # 프로젝트 초기화
bun install                 # 의존성 설치 (npm 대비 10~30배 빠름)
bun add express             # 패키지 추가
bun remove lodash           # 패키지 제거
bun update                  # 업데이트
  • npm/yarn/pnpm 호환 (package.json, node_modules)
  • 글로벌 캐시 + 하드링크 → 디스크 절약
  • bun.lockb 바이너리 락파일 (빠른 파싱)

런타임

// TypeScript 그대로 실행 — 설정 불필요
const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Hello Bun!");
  },
});
console.log(`Listening on ${server.port}`);
  • Web Standard API: fetch, Request, Response, WebSocket 네이티브
  • Node.js 호환: fs, path, http, crypto 등 대부분 호환
  • Bun.serve(): 내장 HTTP 서버 (Express/Fastify 없이도 가능)
  • Bun.file(): 빠른 파일 I/O
  • Bun.sql(): 내장 PostgreSQL/MySQL 클라이언트 (v1.2+)
  • SQLite: bun:sqlite 네이티브 내장
  • FFI: bun:ffi로 C/Rust 라이브러리 직접 호출

번들러

bun build ./src/index.ts --outdir ./dist
bun build ./src/index.ts --compile              # 단일 실행 파일
bun build ./src/index.ts --compile --target=browser  # 단일 HTML (v1.3.10)
  • esbuild급 속도
  • --compile: JS/TS를 단일 바이너리로 컴파일 (배포 간편)
  • --target=browser: JS+CSS+자산 → 단일 HTML 파일 (v1.3.10 신규)

테스트 러너

import { expect, test, describe } from "bun:test";
 
describe("math", () => {
  test("2 + 2", () => {
    expect(2 + 2).toBe(4);
  });
});
bun test                    # 테스트 실행
bun test --coverage         # 커버리지
  • Jest 호환 API (describe, test, expect)
  • 스냅샷 테스트, 모킹 지원

Node.js 호환성

항목상태
npm 패키지대부분 호환
CommonJS (require)O
ES Modules (import)O
node_modulesO
package.jsonO
Node.js 내장 모듈 (fs, path 등)대부분 O
node: 프리픽스O
C++ 애드온 (N-API)O
Express/Fastify/HonoO
Next.jsO (실험적)
  • 목표: Node.js 드롭인 대체 (대부분 nodebun으로 교체만 하면 동작)
  • 일부 엣지 케이스에서 비호환 있음 (지속 개선 중)

Bun vs Node.js vs Deno

항목Node.jsDenoBun
엔진V8V8JavaScriptCore
언어C++RustZig
TypeScriptts-node/tsx 필요네이티브네이티브
패키지 매니저npm (별도)없음 (URL import)내장
번들러별도 (Webpack 등)없음내장
테스트별도 (Jest 등)내장내장
속도기준선비슷가장 빠름
호환성기준 (최대)부분높음
생태계최대성장 중성장 중
프로덕션 안정성최고높음성장 중
보안 모델없음퍼미션 기반없음

v1.3.10 주요 업데이트 (2026.03)

기능내용
REPL 재구현Zig 기반 완전 재작성 — 문법 강조, 탭 완성, 히스토리
브라우저 컴파일--target=browser → 단일 HTML 파일 생성
ES 데코레이터TC39 표준 완벽 지원 (accessor, Symbol.metadata)
Windows ARM64Snapdragon 기반 Windows 지원
배럴 임포트 최적화빌드 속도 2배 향상
문자열 슬라이싱JSC 업그레이드로 168배 빨라짐

사용 사례

용도적합도비고
새 프로젝트최적빠른 시작, 올인원
기존 Node.js 마이그레이션좋음대부분 드롭인 교체
CLI 도구최적--compile로 단일 바이너리
API 서버좋음Bun.serve() or Express/Hono
프론트엔드 빌드좋음번들러 내장
스크립팅최적TS 즉시 실행, .env 자동
대규모 프로덕션주의아직 Node.js 대비 안정성 검증 필요

관련 항목