Bun으로 자바스크립트 툴체인 단순화하기
Bun의 런타임·패키지 관리·테스트·번들 기능을 작은 프로젝트에서 시험하고 기존 Node.js 환경으로 안전하게 되돌리는 방법을 설명합니다.
Bun은 JavaScript·TypeScript 런타임, 패키지 관리자, 테스트 러너, 번들러를 하나의 실행 파일에 묶은 도구입니다. 기존 Node.js 프로젝트에 패키지 설치부터 부분적으로 도입할 수도 있고 새 프로젝트에서 전체 도구 체인을 사용할 수도 있습니다. 빠르다는 수치보다 중요한 것은 호환성 범위를 작게 잡고 잠금 파일과 CI를 함께 검증하는 것입니다.
도입 전 확인
공식 문서 기준 macOS, Linux, Windows를 지원합니다. macOS는 13 이상, Windows는 10 1809 이상이 필요하며 Linux 설치 스크립트에는 unzip이 필요할 수 있습니다. 오래된 x64 CPU에서는 표준 빌드의 명령어 집합 요구 사항 때문에 baseline 빌드가 필요할 수 있습니다.
설치와 확인
macOS와 Linux의 공식 설치 예시는 다음과 같습니다. 조직 환경에서는 파이프로 실행하기 전에 설치 스크립트 내용을 검토하거나 Homebrew·npm·Docker 같은 승인된 방식을 선택하세요.
curl -fsSL https://bun.com/install | bash
bun --version
bun --revisioncommand not found가 나오면 새 터미널을 열고 ~/.bun/bin이 PATH에 포함됐는지 확인합니다.
첫 서버 실행
새 프로젝트에서 가장 작은 동작을 확인하려면 공식 Quickstart 흐름을 따릅니다.
bun init my-app
cd my-app
bun run index.tsindex.ts를 아래처럼 바꾸면 3000번 포트의 HTTP 서버를 실행할 수 있습니다.
const server = Bun.serve({
port: 3000,
routes: { "/": () => new Response("Bun!") },
});
console.log(server.url);bun run index.ts를 다시 실행하고 브라우저에서 http://localhost:3000을 확인합니다.
기존 프로젝트 적용
기존 Node.js 프로젝트에서는 처음부터 런타임을 바꾸지 말고 패키지 설치만 별도 브랜치에서 시험하는 편이 안전합니다.
git switch -c chore/try-bun
bun install
bun testBun은 bun.lock을 만들 수 있습니다. pnpm 잠금 파일을 감지해 마이그레이션하는 경우도 있으므로 생성된 diff를 검토하세요. CI에서는 bun install --frozen-lockfile을 사용하면 package.json과 잠금 파일이 다를 때 실패시켜 재현성을 높일 수 있습니다.
주요 설정
bunfig.toml과 사용자 범위의 .bunfig.toml로 설치 동작을 조정할 수 있습니다. 새 워크스페이스는 격리형 linker가 기본이 될 수 있고 기존 프로젝트는 호이스팅 방식을 유지할 수 있으므로, 모노레포에서는 phantom dependency가 드러나는지 점검해야 합니다. 의존성의 lifecycle script는 무조건 실행되지 않으며 꼭 필요한 패키지는 trustedDependencies로 명시합니다. 이 선택은 공급망 위험과 빌드 호환성 사이의 경계입니다.
비용과 데이터
Bun 자체는 오픈소스이며 Bun 본체는 MIT 라이선스로 안내됩니다. 패키지를 설치할 때는 npm 레지스트리와 Git 저장소에 네트워크 요청이 발생하고, canary 빌드는 공식 문서상 충돌 보고를 자동 업로드할 수 있으므로 조직 정책을 확인하세요. 의존 패키지 라이선스는 Bun 라이선스와 별개입니다.
흔한 문제
Illegal instruction: CPU 요구 사항을 확인하고 baseline 빌드를 사용합니다.- 타입 오류: 기존 프로젝트라면
bun add -d @types/bun과 TypeScript 설정을 확인합니다. - 설치 후 동작 차이: postinstall이 필요한 패키지인지,
trustedDependencies가 필요한지 봅니다. - CI 잠금 파일 오류: 로컬에서 잠금 파일을 갱신하고 변경을 커밋한 뒤
--frozen-lockfile을 사용합니다.
되돌리기
시험 브랜치에서 만든 bun.lock과 설정 변경을 제거하고 기존 잠금 파일로 npm ci 또는 기존 패키지 관리자의 frozen 설치를 다시 실행하면 됩니다. Bun 자체는 설치 방식에 맞는 공식 제거 절차를 사용하세요. 공식 스크립트로 설치한 macOS·Linux 환경은 ~/.bun 제거가 안내되지만, 실행 전에 필요한 캐시나 전역 패키지가 없는지 확인해야 합니다.
이 글의 명령은 2026년 9월 13일 Bun 공식 문서 기준이며 직접 실행 검증하지 않았습니다.