본문 바로가기
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

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

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