Deno přichází s novou funkcí: desktopové aplikace přímo z TypeScriptu
Deno chystá příkaz deno desktop, který umožní z běžného Deno projektu, od jednoduchého TypeScript souboru až po Next.js aplikaci, vytvořit samostatnou desktopovou aplikaci. Výstupem je redistribuovatelný binární soubor, který v sobě obsahuje kód, Deno runtime i webový renderovací engine.
Funkce zatím není ve stabilní verzi, přijde s Deno v2.9.0 a lze ji vyzkoušet přes deno upgrade canary.
Proč to Deno dělá?
Webové technologie jsou nejrozšířenější UI toolkit na světě. Existující desktopová řešení postavená na webových stackách (Electron, Tauri, Electrobun) mají každé své nevýhody: příliš velké binárky, chybějící podpora platforem, žádný ekosystém JavaScriptu, chybějící mechanismus aktualizací nebo integrace frameworků.
deno desktop se snaží tyto kompromisy vyřešit:
- Malé binárky s plnou Node.js kompatibilitou – standardně používá systémový WebView, volitelně lze přepnout na bundlovaný Chromium (CEF) pro konzistentní renderování napříč platformami.
- Automatická detekce frameworků – stačí namířit
deno desktopna projekt v Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart a dalších; žádné změny kódu nejsou potřeba. - In-process komunikace místo IPC – komunikace mezi backendem a UI probíhá přes in-process kanály, nikoliv přes sockety, takže odpadá meziprocesorový overhead.
- Cross-kompilace z jednoho stroje – z jednoho počítače lze sestavit binárky pro macOS, Windows i Linux.
- Vestavěné auto-aktualizace – stačí publikovat manifest
latest.jsona bsdiff patche; runtime sám stáhne, aplikuje, a v případě chyby vrátí aktualizaci zpět.
Jak to vypadá v praxi?
Spustit desktopovou aplikaci je opravdu jednoduché – jeden soubor s Deno.serve() handlerem, příkaz deno desktop main.ts, a výsledkem je okno s lokálním HTTP serverem. Vzniklý binární soubor lze spustit přímo bez jakýchkoliv dalších závislostí.
Jde o zajímavou alternativu k Electronu – výrazně jednodušší na nastavení a s mnohem menší velikostí výsledné aplikace.