Bun 런타임은(는) 무엇을 하나요?
Bun은 빠른 올인원 JavaScript 런타임이자 도구 키트입니다: 런타임, 패키지 매니저, 번들러, 테스트 러너.
사용 시기
- Bun을 선호하는 경우: 새로운 JS/TS 프로젝트, 설치/실행 속도가 중요한 스크립트, Bun 런타임을 사용한 Vercel 배포, 단일 도구 체인(실행 + 설치 + 테스트 + 빌드)을 원할 때.
- Node를 선호하는 경우: 최대 생태계 호환성, Node를 가정하는 레거시 도구, 또는 의존성이 Bun에서 알려진 문제가 있을 때.
다음과 같은 상황에서 사용하세요: Bun 도입 시, Node에서 마이그레이션 시, Bun 스크립트/테스트를 작성하거나 디버깅할 때, Vercel 또는 다른 플랫폼에서 Bun을 구성할 때.
작동 방식
- 런타임: 드롭인 Node 호환 런타임(Zig으로 구현, JavaScriptCore 기반).
- 패키지 매니저:
bun install은 npm/yarn보다 훨씬 빠릅니다. 현재 Bun에서는 잠금 파일이 기본적으로bun.lock(텍스트)입니다; 이전 버전은bun.lockb(바이너리)를 사용했습니다. - 번들러: 앱 및 라이브러리용 내장 번들러 및 트랜스파일러.
- 테스트 러너: Jest 유사 API를 사용하는 내장
bun test.
Node에서 마이그레이션: node script.js를 bun run script.js 또는 bun script.js로 바꾸세요. npm install 대신 bun install을 실행하세요; 대부분의 패키지가 동작합니다. npm 스크립트에는 bun run을 사용하고, npx 방식의 일회성 실행에는 bun x를 사용하세요. Node 내장 모듈이 지원되며, 성능 향상을 위해 Bun API가 존재하는 경우 이를 선호하세요.
Vercel: 프로젝트 설정에서 런타임을 Bun으로 설정하세요. 빌드: bun run build 또는 bun build ./src/index.ts --outdir=dist. 설치: 재현 가능한 배포를 위해 bun install --frozen-lockfile.
예제
실행 및 설치
# 의존성 설치 (bun.lock 또는 bun.lockb 생성/업데이트)
bun install
# 스크립트 또는 파일 실행
bun run dev
bun run src/index.ts
bun src/index.ts
스크립트 및 환경변수
bun run --env-file=.env dev
FOO=bar bun run script.ts
테스트
bun test
bun test --watch
// test/example.test.ts
import { expect, test } from "bun:test";
test("add", () => {
expect(1 + 2).toBe(3);
});
런타임 API
const file = Bun.file("package.json");
const json = await file.json();
Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello");
},
});
모범 사례
- 재현 가능한 설치를 위해 잠금 파일(
bun.lock또는bun.lockb)을 커밋하세요. - 스크립트에는
bun run을 선호하세요. TypeScript의 경우 Bun이.ts파일을 기본적으로 실행합니다. - 의존성을 최신 상태로 유지하세요; Bun과 생태계가 빠르게 진화합니다.