Tauri 셸
데스크톱 셸은 Tauri 2 위에 구축됩니다. 네이티브 창을 소유하고 백엔드를 실행하며, 둘이 함께 종료되도록 보장합니다.
셸의 역할
셸은 세 가지를 합니다.
- 사이드카를 실행 — 자체 포함 Node.js 백엔드 프로세스를 시작하고 웹뷰를 열기 전에 로컬 API가 준비될 때까지 기다립니다. 죽은 서버를 가리키는 반쯤 로드된 창을 볼 일이 없습니다.
- 웹뷰를 호스팅 — 프로덕션 웹 앱이 Tauri 웹뷰 안에서 실행되고
무작위 여유 포트의
127.0.0.1로 백엔드와 통신합니다. - 라이프사이클을 소유 — 창 이벤트와 프로세스 이벤트가 연결되어 백엔드와 셸이 항상 하나의 단위로 종료됩니다.
창 라이프사이클
- 닫기 — 창을 닫으면 사이드카의 정상 종료가 촉발됩니다. 백엔드가 깨끗하게 중지하도록 요청하고, 앱은 종료 전에 이를 기다립니다. 고아 Node.js 프로세스가 남지 않습니다.
- 백엔드 크래시 — 사이드카가 예상치 못하게 종료되면 셸은 아무것도 할 수 없는 창을 보여주는 대신 오류로 종료합니다. 정상 종료는 별도로 표시되므로 깨끗한 종료가 크래시로 오인되지 않습니다.
- 재시작 — 앱을 다시 시작하면 사이드카가 처음부터 다시 실행됩니다. 상태는 프로세스가 아니라 데이터 디렉터리에 있으므로 재시작은 손실이 없습니다.
창이 곧 API
셸이 콘텐츠를 보여주기 전에 API를 기다리므로 첫 실행이 즉각적으로
느껴집니다. 창이 준비된 애플리케이션 위에 열립니다. 백엔드는 임시
포트의 127.0.0.1에서만 수신하므로 네트워크에 노출되는 것이
없습니다.
업데이터 통합
릴리스 빌드는 Tauri 업데이터를 통합합니다. 셸은 코어 업데이트를 확인하고 매니페스트와 minisign 서명을 검증하며 플랫폼 아티팩트를 설치하고 다시 시작할 수 있습니다. 업데이터는 사용자 데이터 디렉터리와 별개로 코어를 교체하며, 서명되지 않은 다운그레이드는 거부됩니다. 업데이트 엔드포인트와 공개 키 없이 만든 빌드는 완전히 기능하지만 업데이트가 구성되지 않았다고 보고합니다.
개발 빌드
개발 중에는 같은 셸이 개발 서버와 로컬에서 시작된 백엔드에 대해
실행될 수 있습니다. 사이드카가 창과 함께 종료된다는 프로덕션 보장은
패키징된 빌드에 적용되며, pnpm desktop:dev는 셸을 실행 중인 개발
프로세스에 연결합니다.
사이드카가 번들되고 관리되는 방식은 Node 사이드카를 참조하세요.