Bun 런타임
Bun은 빠른 올인원 JavaScript 런타임 및 툴킷입니다: 런타임, 패키지 매니저, 번들러, 테스트 러너.
사용 시점
- Bun 사용을 선호할 때: 새로운 JS/TS 프로젝트, 설치/실행 속도가 중요한 스크립트, Bun 런타임을 사용한 Vercel 배포, 단일 툴체인(실행 + 설치 + 테스트 + 빌드)을 원할 때.
- Node 사용을 선호할 때: 최대 생태계 호환성이 필요할 때, Node를 가정하는 레거시 도구를 사용할 때, 또는 의존성에 알려진 Bun 문제가 있을 때.
다음 경우에 사용하세요: Bun 도입, Node에서 마이그레이션, Bun 스크립트/테스트 작성 또는 디버깅, Vercel 또는 다른 플랫폼에서 Bun 구성.
작동 방식
- 런타임: 드롭인 방식의 Node 호환 런타임(JavaScriptCore 기반, Zig로 구현).
- 패키지 매니저:
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과 생태계가 빠르게 진화합니다.