문서로 돌아가기
배포

Tauri v2 개발 가이드

Tauri v2를 위한 프로젝트 레이아웃, 명령, 기능 기반 권한.

10분 읽기

PlanToCode는 데스크톱 애플리케이션에 Tauri v2를 사용합니다. 이 가이드는 프로젝트 구조, 명령 시스템, 기능 기반 권한, 개발 워크플로우를 다룹니다.

프로젝트 레이아웃

데스크톱 애플리케이션은 표준 Tauri v2 관례를 따릅니다:

  • desktop/src/: 컴포넌트, 훅, 프로바이더가 있는 React 프론트엔드
  • desktop/src-tauri/: 명령, 작업, 서비스가 있는 Rust 백엔드
  • desktop/src-tauri/src/lib.rs: 애플리케이션 진입점
  • desktop/src-tauri/src/commands/: Tauri 명령 핸들러 (~35개 모듈)
  • desktop/src-tauri/capabilities/: 권한 정의
  • desktop/src-tauri/tauri.conf.json: Tauri 구성

Tauri 구성

tauri.conf.json이 애플리케이션을 구성합니다:

  • 앱 메타데이터를 위한 productName, version, identifier
  • 프론트엔드를 위한 build.beforeDevCommand와 beforeBuildCommand
  • 설치 프로그램을 위한 bundle 설정 (DMG, NSIS, AppImage)
  • Content Security Policy를 위한 security.csp
  • 공식 플러그인을 위한 plugins 구성

기능 기반 권한

Tauri v2는 앱이 액세스할 수 있는 것을 제어하기 위해 기능을 사용합니다:

  • default.json: 모든 윈도우를 위한 기본 권한
  • desktop-default.json: 데스크톱 특화 권한
  • plantocode-api.json: PlanToCode 명령을 위한 커스텀 권한
  • 권한이 액세스 허용: 파일 시스템, 셸, http, 다이얼로그, 알림

Tauri 플러그인

PlanToCode는 여러 공식 Tauri 플러그인을 사용합니다:

  • tauri-plugin-http: API 호출을 위한 HTTP 클라이언트
  • tauri-plugin-dialog: 네이티브 파일/폴더 선택기
  • tauri-plugin-shell: 셸 명령 실행
  • tauri-plugin-store: 영속적 키-값 저장소
  • tauri-plugin-notification: 데스크톱 알림
  • tauri-plugin-updater: 인앱 업데이트
  • tauri-plugin-single-instance: 단일 인스턴스 적용

애플리케이션 상태

Tauri의 상태 시스템을 통해 관리되는 Rust 상태:

  • AppState 구조체가 공유 상태 보유
  • 서버 URL과 기능 플래그를 위한 RuntimeConfig
  • 보안 자격 증명 저장을 위한 TokenManager
  • AI 모델 구성을 위한 ConfigCache

명령 생성하기

Tauri 명령이 Rust 함수를 프론트엔드에 노출합니다:

  • async 함수에 #[tauri::command] 속성 사용
  • 오류 처리를 위해 Result<T, String> 반환
  • State<AppState> 매개변수를 통해 상태 액세스
  • lib.rs invoke_handler에 등록

단일 인스턴스

앱이 데이터 충돌을 방지하기 위해 단일 인스턴스를 적용합니다:

  • tauri-plugin-single-instance가 감지 처리
  • 두 번째 실행은 기존 윈도우에 포커스
  • 딥 링크가 실행 중인 인스턴스로 전달

개발 워크플로우

개발을 위한 일반 명령:

  • pnpm tauri dev: 핫 리로드와 함께 개발 시작
  • pnpm tauri build: 프로덕션 릴리스 빌드
  • cargo test: Rust 테스트 실행
  • cargo clippy: Rust 코드 린트

모바일 고려사항

Tauri v2는 모바일을 지원하지만, PlanToCode는 네이티브 Swift를 사용합니다:

  • 네이티브 경험을 위해 SwiftUI로 빌드된 iOS 앱
  • 데스크톱과 모바일 간 공유 API 계약
  • WebSocket 릴레이를 통한 디바이스 연결

배포

각 플랫폼을 위한 빌드 아티팩트:

  • macOS: 유니버설 바이너리가 있는 .dmg (Intel + Apple Silicon)
  • Windows: NSIS 설치 프로그램과 MSIX 패키지
  • Linux: 광범위한 호환성을 위한 AppImage