bun

Bun 런타임과 패키지 매니저 CLI. JavaScript/TypeScript 실행, 패키지 설치, 스크립트 실행, 테스트, 번들링, 임시 실행, workspace 관리를 한 도구로 처리한다.

  • bun은 Node.js 대체 런타임이면서 npm, yarn, pnpm 대체를 지향하는 통합 CLI다.
  • 기존 package.json 프로젝트에서도 bun install, bun run, bun test 흐름으로 바로 사용할 수 있다.
  • bunxnpx/yarn dlx에 해당하고, locally installed package를 우선한 뒤 없으면 global cache로 자동 설치해 실행한다.
  • 이 환경에는 bun 바이너리가 없어 로컬 –help 원문은 확인하지 못했고, 2026-07-19 기준 공식 문서 Installation, Bun Runtime, bun install, bunx, bun test, bunfig.toml를 반영했다.
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을 사용한다.
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…]
  • –watch: bun run 또는 bun test에서 변경 감지 후 자동 재실행한다.
  • –filter PATTERN: monorepo에서 여러 workspace의 script 실행이나 설치 대상을 제한한다.
  • –console-depth N: console.log() 객체 출력 깊이를 조정한다.
  • –smol: 메모리 사용량을 줄이는 대신 성능을 희생한다.
  • –production: devDependenciesoptionalDependencies를 제외한다.
  • –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: 설치 로그량을 조정한다.
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
  • 주요 파일: package.json, bun.lock, bunfig.toml
  • bunfig.toml[install] 섹션에서 minimumReleaseAge, registry, cache, linker 관련 기본값을 관리할 수 있다.
  • minimumReleaseAgeExcludes로 age gate 예외 패키지를 지정할 수 있다.
  • workspace는 package.json"workspaces" 배열을 사용한다.
  • dependency lifecycle script를 허용하려면 package.jsontrustedDependencies에 패키지를 명시한다.
  • bun만 입력해 파일을 직접 실행할 때와 bun run으로 package.json script를 실행할 때 해석 우선순위가 다르므로 이름 충돌을 확인한다.
  • 기존 Node 프로젝트에서 설치 전략 차이로 동작이 달라지면 –linker hoisted–linker isolated 중 어느 쪽이 맞는지 확인한다.
  • 설치 직후 native dependency가 준비되지 않으면 trustedDependencies 또는 lifecycle script 정책을 확인한다.
  • CI에서 재현성을 원하면 bun install –frozen-lockfile을 우선한다.
  • 최근 배포된 악성 패키지 방어가 필요하면 minimumReleaseAge를 설정한다.
  • Node shebang CLI를 Bun으로 강제 실행하려면 bunx –bun을 executable 이름 앞에 둬야 한다.
  • 이 저장소 작업 환경에는 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 유사 모델이고, 기존 프로젝트 호환성 때문에 기본 전략이 프로젝트 상태에 따라 달라질 수 있다.
  • 별도 legacy 섹션보다는 bun 도입 시 기존 npm/pnpm 전용 스크립트와 lockfile 관행이 그대로 맞지 않을 수 있다는 점을 먼저 점검한다.
  • 런타임 실행: bun, bun run
  • 테스트: bun test
  • 번들링: bun build
  • 임시 패키지 실행: bunx
  • 대체 도구: npm, pnpm, yarn

bun --help

  • codex:: 2026-07-19 Moved the page to the node.js:bun:ko head-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.
  • /home/u613600155/domains/cli.zerotymer.net/public_html/data/pages/node.js/bun/ko.txt
  • 마지막으로 수정됨: 2026/07/19 02:01
  • (바깥 편집)