Deno Desktop
使用 Deno 2.9 的 deno desktop 将 Web 应用打包为跨平台桌面程序
deno desktop 从 Deno 2.9 起可用。它把 TypeScript/JavaScript 应用、Deno 运行时和 Web 渲染后端打成每个平台的自包含桌面产物。
最短流程
deno --version # 需要 2.9+
deno desktop --hmr main.ts
deno desktop main.ts
入口可以是小型 Deno.serve 应用,也可以是 Next.js、Astro、Fresh、SvelteKit 等框架项目。具体 adapter、静态资源和开发命令按框架官方指南配置。
能力与边界
| 能力 | 当前含义 |
|---|---|
| 窗口 | Deno.BrowserWindow 管理生命周期与多窗口 |
| 前后端通信 | 显式 bindings,不把任意 renderer 输入当可信代码 |
| 桌面集成 | 菜单、托盘、Dock、对话框和系统通知 |
| 调试 | --hmr 与统一 DevTools |
| 分发 | 支持目标 triple 和 --all-targets 交叉构建 |
| 更新 | Deno.autoUpdate() + bsdiff + 失败回滚 |
deno desktop --target aarch64-apple-darwin main.ts
deno desktop --all-targets main.ts
发布检查
- 为 macOS/Windows 配置真实代码签名;ad-hoc 签名不足以消除 Gatekeeper 警告。
- 在每个目标 OS 验证通知、文件对话框、GPU、字体和自动更新。
- 自动更新清单使用 Ed25519 签名;更新服务走 HTTPS。
- 官方文档说明 Windows 当前尚不能应用已下载的 auto-update patch,发布前再次核对。
- 错误报告可能含 stack 与运行时上下文,只发送到 HTTPS,并先做数据分级。