bun은 단순한 패키지 매니저가 아니에요 : Node, npm, 그리고 여러 부가 도구(번들러, 테스트 러너)를 Zig로 작성된 하나의 바이너리로 대체하려는 완전한 JavaScript 런타임이에요.
bun 하나로 하는 것들
| 기능 | bun | 별도 도구 |
|---|---|---|
| JavaScript 런타임 | 예 | Node.js |
| 패키지 매니저 | 예 | npm / pnpm |
| 번들러 | 예 | Vite / esbuild / Rollup |
| 테스트 러너 | 예 | Vitest / Jest |
| TypeScript 트랜스파일러 | 기본 내장 | tsc / ts-node |
결과 : 더 적은 의존성, 더 적은 설정, 그리고 Node보다 빠른 실행 속도.
bun 설치하기
macOS와 Linux:
Windows (PowerShell):
npm으로(대안):
설치 확인:
자주 쓰는 명령어
기존 프로젝트의 의존성 설치:
패키지 추가:
개발 의존성 추가:
스크립트 실행:
파일 직접 실행(node 없이):
테스트 실행:
일회성 명령어 실행:
패키지 제거:
bun이 왜 이렇게 빠른가
bun은 가비지 컬렉터가 없는 저수준 언어 Zig로 작성됐어요. 빠른 시작으로 알려진 Safari의 JavaScriptCore 엔진을 사용해요. 패키지 설치는 공격적으로 병렬화되어 있고 자체 바이너리 캐시 형식(bun.lockb)을 사용해요.
공개 벤치마크에서 bun은 npm보다 520배, pnpm보다 25배 빠르게 의존성을 설치해요.
bun의 lockfile
bun은 bun.lockb 파일(바이너리 형식, 사람이 읽을 수 없음)을 생성해요. 고정된 버전을 확인해야 한다면:
호환성
bun은 npm 생태계와 약 95% 호환돼요. 대부분의 패키지가 수정 없이 작동해요. 남은 문제 사례 : 일부 네이티브 패키지(.node 바인딩)와 Node에 매우 특화된 도구들이에요. 2026년에는 매 릴리즈마다 호환성이 개선되고 있어요.