npm/pnpm로 잘 돌던 모노레포를 Bun으로 옮기려고 합니다. 구조는:
apps/
web/ # Next.js 16
api/ # NestJS
packages/
shared/ # 공유 타입
ui/ # 공유 컴포넌트
bun install은 잘 되는데, apps/web에서 import { Button } from '@scope/ui' 하면 모듈을 못 찾습니다. 루트 package.json에 "workspaces": ["apps/*", "packages/*"]는 있어요.
댓글 3
Bun 2.0은 npm/pnpm와 workspace 동작이 미묘하게 다릅니다. 4가지를 체크하세요.
1) 워크스페이스 패키지의 package.json 확인
Bun은
main보다exports를 우선 봅니다.exports필드 누락이 가장 흔한 원인.2) 의존성 명시
3) tsconfig paths 동기화
4) Next.js 16 transpilePackages
이 4가지 다 맞으면 동작합니다. 한 번에 안 되면
rm -rf node_modules bun.lockb && bun install로 클린 install 해보세요.저도 비슷한 이슈 겪었는데 한 가지만 더 추가하면 — Bun 2.0의 catalog 프로토콜을 같이 쓰면 의존성 버전 통일이 훨씬 쉬워져요.
모든 워크스페이스가 같은 React 버전을 쓰게 강제됩니다. 듀얼 React 인스턴스 문제 자동 방지.