Monorepo · pnpm · Turborepo 2026
2026 프론트엔드 모노레포 피해야 할 점:
원격 Mac에서 pnpm·Turborepo 원격 캐시·레지스트리 미러 비교 3단계
2026.03.24
MacWww
9분 읽기
원격 Mac에서 pnpm·Turborepo를 쓰면 캐시 적중이 들쭉날쭉하거나 미러만 바꿨는데 CI와 해석이 갈라지기 쉽습니다. 로컬 대 원격 Turbo 캐시 표, 미러 리스크 표, 그리고 환경 변수·turbo.json·CI 세 줄기 설정을 정리했습니다. 블로그·홈·요금으로 이어집니다.
01 원격 Mac에서 캐시·설치가 흔들리는 이유
SSH마다 경로·프로필이 다르고 CI는 다른 유저로 돕니다. pnpm 스토어·링크와 Turbo 입력 해시가 Node·레지스트리·미선언 env에 민감해 풀 리빌드가 납니다.
- env 미선언: 빌드가 읽는 값이
turbo.json에 없으면 원격 캐시 히트가 엇나갈 수 있음. - 스토어 분산: 잡마다 스토어 경로가 다르면 용량 중복·하드링크 깨짐.
- 미러 지연: 메타데이터가 어긋나면 락을 써도 기계별 해석이 달라 보임.
02 로컬 Turbo 캐시 vs 원격 캐시
원격 캐시는 팀 공유에 유리하지만 env·입력 선언이 엄격해야 안전합니다.
| 항목 | 로컬 | 원격 |
|---|---|---|
| 속도 | 한 대에 빠름, 인스턴스 교체 시 소실 | 키 일치 시 CI·동료와 공유 |
| 비용 | 디스크 위주 | 토큰·쿼터·네트워크 |
| 실패 | 미스 시 로컬 재빌드 | 오히트 시 출력 틀어짐, 읽기 중단·입력 수정 필요 |
03 미러 전환 리스크
문제는 미러 단일화가 아니라 기계마다 .npmrc·인증·스코프 설정이 달라 tarball이 갈라질 때입니다. 전환 직후 아래 세 가지를 먼저 점검하세요.
| 리스크 | 증상 | 완화 |
|---|---|---|
| 메타 지연 | CI와 Mac 패치 불일치 | 락 커밋·--frozen-lockfile |
| 혼합 레지 | 스코프만 공식 npm 등 해시 불일치 | 루트 .npmrc 단일 정책 |
| 토큰 | 원격 Mac만 401 | CI·Mac 동일 호스트·시크릿 |
04 1단계 환경 변수
Mac 셸 프로필·팀 문서·CI 시크릿에 동일한 값을 두고 갱신 시 함께 바꿉니다.
- 고정 pnpm 스토어·
PNPM_HOME으로 SSH 간 재사용. NPM_CONFIG_REGISTRY또는 루트.npmrc로 미러 폴백 차단.- 원격 캐시 허용 환경에만
TURBO_TOKEN·팀 슬러그, 디버깅 시 해제. .node-version·fnm·nvm으로 CI와 Node 메이저 일치.
05 2단계 turbo.json 요점
outputs·좁은inputs로 산출·무효화 범위 명시.- 빌드에 필요한 env만
env·passThroughEnv에 넣기. globalDependencies에 락·npmrc·툴체인 파일 포함.
Node·pnpm 격리·번들러 캐시와 병행하세요.
06 3단계 CI 일치
- Mac·CI 모두
pnpm install --frozen-lockfile기본. turbo는package.json에 고정 후pnpm exec turbo.- 포크 PR에는 원격 캐시 쓰기 토큰 비주입.
- 컨테이너는 Docker·Playwright 가이드로 Node·pnpm 맞추기.
인용 가능 규칙
락은 항상 커밋·CI는 frozen만. 빌드 env는 turbo에 전부 선언. 미러 바꾸면 락 갱신 후 풀 빌드 한 번. 배포 검증은 배포·Safari 3단계 참고. 블로그·홈·요금은 로그인 없이 이용 가능.