문서
Nx에서 Bun 더 잘 사용하기: Nx 18 -> 21 마이그레이션
김재민 · 컬리 · 컬리 기술 블로그
소개
Nx가 Bun을 공식 지원하기 전에 도입했다면 마주칠 수 있는 문제들과 해결 방법
AI 핵심 요약
Nx 18과 Bun을 함께 사용하던 팀은 Nx가 Bun 대신 Yarn을 선택하고, webpack 빌드에서 bun.lockb의 의존성 메타데이터를 읽지 못하는 문제를 겪었습니다. Nx의 lock file 감지 로직을 확인해 마이그레이션 중 yarn.lock을 제거한 뒤, Bun 1.2.x와 Nx 21.4 이상으로 올려 텍스트 형식의 bun.lock을 사용했습니다. 그 결과 CI 파이프라인은 14% 짧아지고 아티팩트 크기는 15% 줄었으며, lock file diff 확인과 Dependabot 연동도 개선됐습니다. 공식 지원 표기만으로 프로덕션 안정성을 단정하지 말고, 실제 버전별 호환성과 우회책의 유지보수 비용을 함께 검토해야 한다는 교훈을 얻었습니다.
- Nx는 lock file을 기준으로 패키지 매니저를 감지하므로, 지원되지 않는 lock file이나 남아 있는 yarn.lock이 감지를 방해할 수 있습니다.
- Nx 19.5부터 Bun을 공식 지원하지만, bun.lock 파싱 개선과 webpack 빌드 문제 해결을 위해서는 Nx 21.4 이상이 필요했습니다.
- 바이너리 lock file은 리뷰와 병합, 외부 도구 연동에 불리하므로 텍스트 형식인 bun.lock의 장점을 고려하세요.
- 우회 스크립트나 커스텀 플러그인을 추가하기 전에 업그레이드 비용과 장기 유지보수 부담을 비교하세요.
- 공식 지원 전 도구 조합을 도입할 때는 지원 로드맵, 관련 이슈, lock file 호환성, 롤백 계획을 미리 확인하세요.