bun
Bun 런타임과 패키지 매니저 CLI. JavaScript/TypeScript 실행, 패키지 설치, 스크립트 실행, 테스트, 번들링, 임시 실행, workspace 관리를 한 도구로 처리한다.
Summary
bun은 Node.js 대체 런타임이면서npm,yarn,pnpm대체를 지향하는 통합 CLI다.- 기존
package.json프로젝트에서도bun install,bun run,bun test흐름으로 바로 사용할 수 있다. bunx는npx/yarn dlx에 해당하고, locally installed package를 우선한 뒤 없으면 global cache로 자동 설치해 실행한다.- 이 환경에는
bun바이너리가 없어 로컬–help원문은 확인하지 못했고, 2026-07-19 기준 공식 문서Installation,Bun Runtime,bun install,bunx,bun test,bunfig.toml를 반영했다.
Installation
macOS/Linux에서는 공식 shell installer, Windows에서는 공식 PowerShell installer를 사용할 수 있다. 원격 설치 스크립트를 실행하기 전에 URL이 공식
bun.com 또는 bun.sh 도메인인지 확인한다.
# macOS / Linux: 공식 installer curl -fsSL https://bun.com/install | bash # macOS: Homebrew brew install oven-sh/bun/bun # Node.js가 이미 있는 환경: npm npm install -g bun # 설치 확인 bun --version bun --revision
# Windows PowerShell: 공식 installer powershell -c "irm bun.sh/install.ps1 | iex" # Scoop scoop install bun # 설치 확인 bun --version bun --revision
- Linux에서 공식 installer를 사용하려면
unzip이 필요하다. Debian/Ubuntu에서는 먼저sudo apt install unzip으로 준비할 수 있다. - 공식 installer의 기본 설치 디렉터리는
$HOME/.bun이며 실행 파일은$HOME/.bun/bin아래에 놓인다. - 설치 후
bun: command not found가 나오면 새 terminal을 열거나BUN_INSTALL=$HOME/.bun과$BUN_INSTALL/bin이 shell의PATH에 반영되었는지 확인한다. - Windows는 10 version 1809 이상, macOS는 13.0 이상이 필요하다.
- 설치 후 업데이트:
bun upgrade. Homebrew는brew upgrade bun, Scoop은scoop update bun을 사용한다.
Usage
bun index.ts bun run dev bun test bun build ./src/index.ts --outfile ./dist/app.js bun install bun install react bun install --global cowsay bunx cowsay hello
bun SCRIPT.ts: 런타임 실행bun run SCRIPT_OR_TASK [<switches>…]bun test [<switches>…] [FILES…]bun build ENTRYPOINT… [<switches>…]bun install [PACKAGE…] [<switches>…]bun add PACKAGE…bun remove PACKAGE…bun update [PACKAGE…]bun bunx PACKAGE [ARGS…]
Options
–watch:bun run또는bun test에서 변경 감지 후 자동 재실행한다.–filter PATTERN: monorepo에서 여러 workspace의 script 실행이나 설치 대상을 제한한다.–console-depth N:console.log()객체 출력 깊이를 조정한다.–smol: 메모리 사용량을 줄이는 대신 성능을 희생한다.–production:devDependencies와optionalDependencies를 제외한다.–omit dev|peer|optional: 특정 dependency class를 제외한다.–frozen-lockfile:bun.lock과 불일치 시 실패하고 lockfile을 갱신하지 않는다.–dry-run: 실제 설치 없이 계획만 확인한다.-g,–global: 전역 패키지 설치.–filter SELECTOR: monorepo에서 특정 workspace만 대상으로 설치한다.–linker hoisted|isolated:node_modules배치 전략을 결정한다.–minimum-release-age SECONDS: 너무 최근에 퍼블리시된 패키지를 차단해 공급망 위험을 줄인다.–concurrent-scripts N: lifecycle script 동시 실행 수를 조정한다.–concurrent,–max-concurrency N:bun test병렬 실행 수를 조정한다.–timeout MS,–retry N,–bail [N]: 테스트 실패 처리 정책을 조정한다.–reporter,–reporter-outfile: JUnit 같은 CI 결과물을 출력한다.–bun:bunx가 Node shebang executable도 Bun runtime으로 실행하게 강제한다.–package,-p PKG: binary 이름과 패키지 이름이 다를 때bunx실행 패키지를 직접 지정한다.–silent,–verbose: 설치 로그량을 조정한다.
Examples
bun index.ts bun run dev bun run --filter 'ba*' build bun test bun test --watch bun test --reporter=junit --reporter-outfile=./bun.xml bun build ./src/index.ts --outfile ./dist/app.js bun install bun install react bun install react@latest bun install react@19.1.1 bun install --global cowsay bun install --production bun install --omit dev bun install --omit=dev --omit=peer --omit=optional bun install --frozen-lockfile bun install --dry-run bun install --filter ./packages/web bun install --linker isolated bun add @types/bun --minimum-release-age 259200 bunx cowsay "hello" bunx --bun vite dev bunx -p @angular/cli ng new my-app
Config
- 주요 파일:
package.json,bun.lock,bunfig.toml bunfig.toml의[install]섹션에서minimumReleaseAge, registry, cache, linker 관련 기본값을 관리할 수 있다.minimumReleaseAgeExcludes로 age gate 예외 패키지를 지정할 수 있다.- workspace는
package.json의"workspaces"배열을 사용한다. - dependency lifecycle script를 허용하려면
package.json의trustedDependencies에 패키지를 명시한다.
Troubleshooting
bun만 입력해 파일을 직접 실행할 때와bun run으로package.jsonscript를 실행할 때 해석 우선순위가 다르므로 이름 충돌을 확인한다.- 기존 Node 프로젝트에서 설치 전략 차이로 동작이 달라지면
–linker hoisted와–linker isolated중 어느 쪽이 맞는지 확인한다. - 설치 직후 native dependency가 준비되지 않으면
trustedDependencies또는 lifecycle script 정책을 확인한다. - CI에서 재현성을 원하면
bun install –frozen-lockfile을 우선한다. - 최근 배포된 악성 패키지 방어가 필요하면
minimumReleaseAge를 설정한다. - Node shebang CLI를 Bun으로 강제 실행하려면
bunx –bun을 executable 이름 앞에 둬야 한다.
Compatibility
- 이 저장소 작업 환경에는
bun실행 파일이 없어 로컬 검증은 하지 못했다. - 공식 문서 기준
bun install은 Node.js 프로젝트에서 사용 가능하고,peerDependencies도 기본 설치 대상으로 설명된다. - 공식
Bun Runtime문서는bun run -stdin 실행,–filter,–console-depth,–smol, script/file 해석 순서를 설명한다. - 공식
bun test문서는–watch,–concurrent,–timeout,–retry,–bail, JUnit reporter를 문서화한다. isolated설치 전략은 pnpm 유사 모델이고, 기존 프로젝트 호환성 때문에 기본 전략이 프로젝트 상태에 따라 달라질 수 있다.
Deprecated / Legacy
- 별도 legacy 섹션보다는
bun도입 시 기존npm/pnpm전용 스크립트와 lockfile 관행이 그대로 맞지 않을 수 있다는 점을 먼저 점검한다.
Related
See Also
Help
History
- codex:: 2026-07-19 Moved the page to the
node.js:bun:kohead-page path and limited indexmenu to direct children of the current namespace. - codex:: 2026-07-19 Added official installer, package-manager alternatives, prerequisites, verification, PATH, and update guidance.
- codex:: 2026-07-15 Reframed bun as a Node.js alternative runtime and expanded runtime, test, bunx, workspace, and bunfig coverage from official docs.
- codex:: 2026-06-26 Created bun page with package-manager workflow, workspace filtering, and supply-chain safety notes from official docs.