본문으로 건너뛰기

© 2026 Molayo

GeekNews헤드라인2026. 06. 22. 22:02

Deno Desktop: Deno 프로젝트를 데스크톱 앱으로 패키징

요약

Deno v2.9.0(canary)에 도입된 'Deno Desktop' 기능을 통해 TypeScript 프로젝트를 데스크톱 앱 바이너리로 패키징할 수 있습니다. 운영체제 내장 WebView 또는 Chromium을 백엔드로 선택할 수 있으며, 다양한 웹 프레임워크를 자동으로 감지하여 지원합니다.

핵심 포인트

  • Deno 프로젝트를 플랫폼별 재배포 가능한 데스크톱 바이너리로 변환
  • 운영체제 내장 WebView 사용으로 가벼운 바이너리 크기 지향
  • Next.js, Astro 등 주요 웹 프레임워크 자동 감지 및 실행 지원
  • 인프로세스 채널을 통한 효율적인 런타임-UI 통신
  • 교차 컴파일 및 bsdiff 기반의 자동 업데이트 기능 제공
  • 웹 앱과 TypeScript 코드로 만든
    Deno 프로젝트를 플랫폼별 재배포 가능한 데스크톱 앱 바이너리로 묶을 수 있음
  • 출력물은 애플리케이션 코드,
    Deno 런타임, 웹 렌더링 엔진을 함께 포함하며, Deno v2.9.0에 들어갔지만 아직 안정 릴리스는 아님
  • 기본 WebView 백엔드는 운영체제 내장 webview를 사용해 작은 바이너리를 지향하고, 렌더링 일관성이 필요하면
    Chromium(CEF) 백엔드를 선택할 수 있음
  • Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start, Vite SSR 프로젝트를 감지해 릴리스 모드와
    --hmr

개발 모드에 맞게 서버를 실행함

  • Deno 코드와 webview 간 통신은 소켓 기반 IPC가 아닌
    인프로세스 채널을 쓰며, 교차 컴파일과 bsdiff 기반 자동 업데이트까지 범위에 포함됨

deno desktop

의 역할과 현재 상태

deno desktop

은 Deno 프로젝트를 자체 포함형 데스크톱 애플리케이션으로 변환함

  • 입력은 단일 TypeScript 파일부터 Next.js 앱까지 가능함

  • 출력은 플랫폼별로 재배포 가능한 바이너리임

  • 바이너리에는 애플리케이션 코드, Deno 런타임, 웹 렌더링 엔진이 포함됨

  • 이 기능은
    Deno v2.9.0에 포함되어 있지만 아직 안정 릴리스는 아님

  • 지금 시험하려면
    deno upgrade canary

canary

빌드를 설치해야 함

  • 명령어, 설정 키, TypeScript API는 안정화 전까지 바뀔 수 있음

백엔드 선택과 웹 프로젝트 실행

  • 웹 기술을 데스크톱 UI 툴킷으로 쓰면서, 기존 웹 스택 기반 데스크톱 앱 도구의 트레이드오프를 줄이는 방향을 택함

  • Electron, Tauri, Electrobun 같은 도구는 큰 바이너리, 플랫폼 지원 누락, JavaScript 생태계 부재, 내장 업데이트 부재, 프레임워크 통합 부재 같은 트레이드오프가 있을 수 있음

  • 기본 WebView 백엔드는 운영체제의 webview를 사용해
    작은 바이너리를 지향함

  • Deno의 Node 호환 계층을 통해 npm 생태계를 사용할 수 있음

  • macOS·Windows·Linux에서 같은 렌더링이 필요하면 번들된 Chromium인
    CEF 백엔드를 선택할 수 있음

  • 프레임워크 자동 감지는 기존 웹 프로젝트를 코드 변경 없이 데스크톱으로 실행하는 방식임

  • 대상은 Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start, Vite SSR 등임

  • 릴리스 모드에서는 프로덕션 서버를 실행함
    --hmr

에서는 핫 리로드가 있는 개발 서버를 실행함

런타임 통신, 빌드, 업데이트

  • 백엔드와 UI 통신에는
    인프로세스 채널을 사용함

  • 값은 호출 경계를 넘을 때 인코딩됨

  • Deno 코드와 webview 사이에 교차 프로세스 왕복이 없음

  • 한 머신에서 macOS, Windows, Linux용으로
    교차 컴파일할 수 있음

  • 백엔드는 로컬에서 빌드하지 않고 필요할 때 다운로드됨

  • 자동 업데이트는
    latest.json

매니페스트와 bsdiff 패치를 사용하는 내장 바이너리 차분 업데이트 방식임

  • 런타임이 폴링, 적용, 실패한 실행에 대한 롤백을 처리함

간단한 예제와 문서 구성

  • 한 파일짜리 데스크톱 앱은
    Deno.serve()

로 HTML 응답을 반환하는 main.ts

를 만들고 deno desktop main.ts

를 실행해 만들 수 있음

Deno.serve(() =>
new Response("<h1>Hello, desktop</h1>", {
headers: { "content-type": "text/html" },
})
);
deno desktop main.ts
  • 컴파일된 바이너리는
    Deno.serve()

핸들러에 바인딩된 로컬 HTTP 서버를 가리키는 창을 엶

  • macOS/Linux에서는
    ./main

으로 실행함

  • Windows에서는
    .\main.exe

로 실행함

Deno.serve()

는 webview가 이동하는 주소에 자동 바인딩되므로 포트나 호스트 이름을 넘길 필요가 없음

  • 관련 문서는 설정, 백엔드, HTTP 서빙, 프레임워크, 창 관리, 바인딩, 메뉴, 트레이와 dock, 대화상자, 알림, HMR, DevTools, 자동 업데이트, 오류 보고, 배포, 비교, CLI 참조로 나뉨

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0