본문으로 건너뛰기

Tauri 셸

데스크톱 셸은 Tauri 2 위에 구축됩니다. 네이티브 창을 소유하고 백엔드를 실행하며, 둘이 함께 종료되도록 보장합니다.

셸의 역할​

셸은 세 가지를 합니다.

  1. 사이드카를 실행 — 자체 포함 Node.js 백엔드 프로세스를 시작하고 웹뷰를 열기 전에 로컬 API가 준비될 때까지 기다립니다. 죽은 서버를 가리키는 반쯤 로드된 창을 볼 일이 없습니다.
  2. 웹뷰를 호스팅 — 프로덕션 웹 앱이 Tauri 웹뷰 안에서 실행되고 무작위 여유 포트의 127.0.0.1로 백엔드와 통신합니다.
  3. 라이프사이클을 소유 — 창 이벤트와 프로세스 이벤트가 연결되어 백엔드와 셸이 항상 하나의 단위로 종료됩니다.

창 라이프사이클​

  • 닫기 — 창을 닫으면 사이드카의 정상 종료가 촉발됩니다. 백엔드가 깨끗하게 중지하도록 요청하고, 앱은 종료 전에 이를 기다립니다. 고아 Node.js 프로세스가 남지 않습니다.
  • 백엔드 크래시 — 사이드카가 예상치 못하게 종료되면 셸은 아무것도 할 수 없는 창을 보여주는 대신 오류로 종료합니다. 정상 종료는 별도로 표시되므로 깨끗한 종료가 크래시로 오인되지 않습니다.
  • 재시작 — 앱을 다시 시작하면 사이드카가 처음부터 다시 실행됩니다. 상태는 프로세스가 아니라 데이터 디렉터리에 있으므로 재시작은 손실이 없습니다.

창이 곧 API​

셸이 콘텐츠를 보여주기 전에 API를 기다리므로 첫 실행이 즉각적으로 느껴집니다. 창이 준비된 애플리케이션 위에 열립니다. 백엔드는 임시 포트의 127.0.0.1에서만 수신하므로 네트워크에 노출되는 것이 없습니다.

업데이터 통합​

릴리스 빌드는 Tauri 업데이터를 통합합니다. 셸은 코어 업데이트를 확인하고 매니페스트와 minisign 서명을 검증하며 플랫폼 아티팩트를 설치하고 다시 시작할 수 있습니다. 업데이터는 사용자 데이터 디렉터리와 별개로 코어를 교체하며, 서명되지 않은 다운그레이드는 거부됩니다. 업데이트 엔드포인트와 공개 키 없이 만든 빌드는 완전히 기능하지만 업데이트가 구성되지 않았다고 보고합니다.

개발 빌드​

개발 중에는 같은 셸이 개발 서버와 로컬에서 시작된 백엔드에 대해 실행될 수 있습니다. 사이드카가 창과 함께 종료된다는 프로덕션 보장은 패키징된 빌드에 적용되며, pnpm desktop:dev는 셸을 실행 중인 개발 프로세스에 연결합니다.

사이드카가 번들되고 관리되는 방식은 Node 사이드카를 참조하세요.