C.W.K.
Stream
Lesson 06 of 06 · published

모노레포 안의 Tauri

~12 min · tauri, monorepo, structure, workspaces

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"기본 레이아웃은 루트에 앱 하나. 진짜 프로젝트는 앱이 여럿 중 한 폴더이길 원할 때가 많아."

왜 모노레포

스캐폴드는 앱을 레포 루트에 둬, 단일 앱엔 완벽하지. 근데 Tauri 앱을 더 큰 레포 안에 두고 싶을 수 있어 — 공유 컴포넌트 라이브러리, 문서 사이트, 형제 프로젝트 옆에. 그게 모노레포고, Tauri는 잘 다뤄. 경로 몇 개만 제대로 가리키면 돼.

Cinder가 정확히 이래: Tauri 앱이 apps/cinder/에 살고, 네이티브 반쪽은 apps/cinder/src-tauri/에, 다른 workspace 패키지들 옆에 앉아 있어. Tauri의 뭐도 루트 레이아웃을 강요 안 해 — 설정의 경로가 풀리기만 하면 돼.

유일한 규칙: 경로는 src-tauri 기준

tauri.conf.json의 경로 — 특히 frontendDistdevUrl — 는 레포 루트가 아니라 src-tauri/ 디렉터리 기준으로 해석돼. 프론트엔드가 apps/cinder/dist로 빌드되는 모노레포에서도, src-tauri/dist/ 옆에 앉아 있으니 frontendDist는 여전히 ../dist야. 이 상대경로 멘탈 모델을 제대로 잡으면 모노레포 Tauri가 신비롭지 않게 돼.

workspace에서 CLI 돌리기

npm/pnpm/yarn workspaces로는 앱 패키지에 스코프해서 Tauri CLI를 불러. 루트 package.jsonnpm run tauri --workspace apps/cinder dev 같은 스크립트가 레포 어디서든 앱의 dev 루프를 돌려. CLI는 여전히 그 workspace 안의 src-tauri/tauri.conf.json을 찾아서 정상 진행해.

Code

여럿 중 한 workspace인 앱·text
모노레포 레이아웃 (Cinder의 실제 모양):

repo/
├─ package.json            # workspaces: ["apps/*", "packages/*"]
├─ packages/
│   └─ ui/                 # 공유 컴포넌트 라이브러리
└─ apps/
    └─ cinder/
        ├─ src/            # 이 앱의 프론트엔드
        ├─ dist/           # 빌드된 프론트엔드 출력
        ├─ package.json
        └─ src-tauri/      # 네이티브 반쪽
            ├─ tauri.conf.json   # frontendDist: "../dist"
            └─ src/lib.rs
레포 루트에서 Tauri 몰기·json
// 루트 package.json — Tauri CLI를 앱 workspace에 스코프.
{
  "workspaces": ["apps/*", "packages/*"],
  "scripts": {
    "tauri": "npm run tauri --workspace apps/cinder",
    "tauri:dev": "npm run tauri dev --workspace apps/cinder",
    "tauri:build": "npm run tauri build --workspace apps/cinder"
  }
}

External links

Exercise

스캐폴딩한 앱을 모노레포 안 apps/myapp/로 옮긴다면 어떻게 할지 스케치해. 새 frontendDist 값(힌트: dist가 여전히 src-tauri 옆이면 안 바뀜)이랑 그걸 돌릴 루트 package.json 스크립트를 써. 여기 유일한 진짜 함정인 상대경로 추론을 연습하는 거야.
Hint
apps/myapp/dist랑 apps/myapp/src-tauri가 형제면 frontendDist는 '../dist' 그대로. 루트 스크립트는 --workspace apps/myapp 써. 함정은 경로가 레포 루트 기준이라고 생각하는 거야 — src-tauri 기준이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.