Bun
개요
Bun은 Node.js, npm, webpack 및 Jest를 단일 바이너리로 대체하는 올인원 JavaScript/TypeScript 런타임입니다. 네이티브 TypeScript 지원, 고성능 HTTP 서버(Bun.serve()), 빠른 패키지 관리자, 번들러 및 놀라울 정도로 빠른 성능의 Jest 호환 테스트 러너를 제공합니다.
지침
- HTTP 서버를 생성할 때는
Bun.serve()를 사용하세요. 이는 내장 WebSocket 지원, TLS 및 스트리밍 응답과 함께 초당 10만 개 이상의 요청을 처리합니다. - 패키지를 관리할 때는
bun install(npm보다 10-30배 빠름),bun add,bun remove를 사용하고, 읽기 쉬운 git diff를 위해bun.lock(텍스트 형식)을 선호하세요. - 번들링할 때는 적절한 대상(
"browser","bun","node")으로Bun.build()를 사용하고,splitting: true로 코드 분할을 활성화하며, 트리 셰이킹을 구성하세요. - 테스트를 작성할 때는 Jest 호환 API(
describe,it,expect), 스냅샷 테스트,mock.module()을 사용한 모킹, 코드 커버리지를 위한--coverage와 함께bun test를 사용하세요. - 파일 I/O를 수행할 때는 훨씬 빠른 파일 작업을 위해 Node.js
fs대신Bun.file()및Bun.write()를 선호하고, 패턴 매칭을 위해Bun.Glob을 사용하세요. - 인증을 처리할 때는 npm 패키지 대신 bcrypt/argon2를 위해
Bun.password.hash()및Bun.password.verify()를 사용하세요. - Node.js에서 마이그레이션할 때는 스크립트에서
node를bun으로 바꾸고,package.json은 변경하지 않은 상태로 두며, 대부분의 npm 패키지가 수정 없이 작동한다는 점에 유의하세요. SQLite npm 패키지 대신 임베디드 데이터베이스에는bun:sqlite를 사용하세요.
예제
예제 1: 고성능 API 서버 구축
사용자 요청: "Bun 내장 HTTP 서버를 사용하여 REST API 생성"
작업:
Bun.serve()및 라우트 핸들러로 서버 생성request.json()으로 JSON 본문을 파싱하고Response객체 반환- 실시간 기능을 위한 WebSocket 업그레이드 추가
- 인증에
Bun.password를, 데이터 저장에bun:sqlite사용
출력: 외부 종속성 없이 Bun 내장 기능만 사용한 빠른 API 서버.
예제 2: Node.js 프로젝트를 Bun으로 마이그레이션
사용자 요청: "내 Express 프로젝트를 Node.js에서 Bun으로 전환"
작업:
- CI 및 로컬 설정에서
npm install을bun install로 대체 package.json스크립트에서node대신bun run을 사용하도록 업데이트dotenv를 Bun 내장.env로딩으로 대체- 테스트 러너를 Jest에서 동일한 테스트 파일로
bun test로 전환
출력: 더 빠른 설치, 시작 및 테스트 실행 속도를 갖춘 Bun 기반 프로젝트.
지침
- 새로운 HTTP 서버에는
Bun.serve()를 사용하세요. Bun에서 Express보다 훨씬 빠릅니다. - 파일 작업에는 Node.js
fs보다Bun.file()및Bun.write()를 선호하세요. - SQLite npm 패키지를 추가하는 대신 로컬 데이터에는
bun:sqlite를 사용하세요. - 기본 네이티브 종속성을 없애기 위해
bcrypt/argon2npm 패키지 대신 인증에Bun.password를 사용하세요. - 읽기 쉬운 diff를 위해
bun.lock(텍스트 형식)을 git에 유지하세요. - 동일한 API로 훨씬 빠른 실행을 위해 Jest 대신
bun test로 테스트하세요. - 브라우저를 대상으로 할 때는
Bun.build()를target: "browser"와 함께 사용하세요.