Electrobun:用 TypeScript 打造 5 分钟出窗口的跨平台桌面应用完整指南
【免费下载链接】electrobunBuild ultra fast, tiny, and cross-platform desktop apps with Typescript.项目地址: https://gitcode.com/GitHub_Trending/el/electrobun
Electrobun 是一个面向 TypeScript 的跨平台桌面应用框架:主进程和 webview 都用 TypeScript 写,打包成单个自解压归档,更新只需千字节级增量补丁。这篇文章讲清楚它如何用 Bun 生态与 Zig 解决 Electron 应用包大、启动慢、更新重的老问题。
桌面应用动辄 200MB、更新还要全量下载,你也烦过吗?
做桌面工具最劝退的两件事:安装包打开就是 186MB,用户耐心直接归零;改一行界面文案,用户还得重新下整包。这是"内置整份 Chromium"方案的通病:运行时太肥,更新太重。Electrobun 想解决的就是这个——你只写 TypeScript,换来小体积、快启动、以 KB 计的增量更新。
🐇 项目全景:Electrobun 框架把哪些东西打包给你
一句话:Electrobun 是构建、更新、发行桌面应用的"solution-in-a-box"(开箱即用方案)。它由三块组成:Hutch,原生构建与工作区 CLI,负责装依赖、跑任务、打包;Cottontail,默认的 JavaScript 运行时;以及平台层,用 Zig、Objective-C 和 C++ 编写。官方支持三平台:macOS 14+、Windows 11+、Ubuntu 24.04+。
⚡ 技术拆解:包小、启动快的三个关键点
Zig 启动器:点击后的第一棒
它做了什么:拦截双击、拉起真正进程、接管信号与窗口生命周期。怎么做:约 700 行 Zig 源码,用cImport直调 CreateProcessW 等系统 API,不引入重型基础库。为什么快:无运行时、编译后二进制小,冷启动路径被压到最短。入口在 package/src/launcher/main.zig。
自解压包:把整个 App 装进一个二进制
它做了什么:首次启动时把自己内部的 Zstandard 压缩数据解压到本地目录。怎么做:靠魔法标记(ELECTROBUN_ARCHIVE_V1)定位归档边界,整个应用就是一个文件。为什么这样做:省掉传统安装器与权限弹窗,分发体积显著变小。核心代码:package/src/extractor/main.zig。
TypeScript 主进程 + 类型化 RPC
窗口、菜单、托盘 API 全部是 TypeScript SDK;主进程与 webview 隔离,靠类型化 RPC(带类型约束的跨进程调用)通信,写法接近函数调用。窗口管理入口:package/src/sdks/main/core/BrowserWindow.ts。
实测感受:千字节更新,10 分钟出包
官方目标很直白:5 分钟开始写代码,10 分钟完成分发。几个关键数据点:
| 项 | 做法 |
|---|---|
| 分发 | 自解压单归档,Zstandard 压缩 |
| 更新 | Zig 优化的 BSDIFF 二进制补丁,千字节级;补丁不可用时回退全量压缩下载 |
| 渲染 | 默认用系统 webview;bundleCEF可选捆绑并固定 Chromium |
| GPU | bundleWGPU让 TypeScript 直控原生 GPU 表面 |
| 官方平台 | macOS 14+ / Windows 11+ / Ubuntu 24.04+ |
v1 发布四周后,仓库 star 增长曲线:
快速上手:3 行命令跑出第一个窗口
npx electrobun init # 生成项目并挑选模板 # 想直接看官方示例,则克隆仓库: git clone https://gitcode.com/GitHub_Trending/el/electrobun生成项目后跑hutch的 dev 任务即可。最小示例 templates/hello-world/src/bun/index.ts 只有 15 行,一个new BrowserWindow就打开主窗口。
深度解析:Electrobun 的更新包为什么能小到 KB 级
更新器是两级策略:优先下载二进制补丁——BSDIFF 是只记录"变化部分"的差异算法,Electrobun 用 Zig 做了优化实现——把它打到本地文件上;补丁拿不到才下载完整压缩归档。多数场景下用户下载的是 KB 而不是数百 MB,仓库里甚至有专门的多版本补丁链生命周期测试:package/scripts/test-updater-lifecycle.mjs。
谁适合 Electrobun,谁不适合
适合:中小型工具类、内部效率软件、想写 Web 技术栈 UI 但嫌 Electron 太重的团队,一份代码覆盖三大主流桌面系统。不适合:目标是 Raspberry Pi 或小众 Linux 发行版的用户——那些只是社区支持或非官方分支,先验证再投入;对 Chromium 行为有深度定制需求的,可选bundleCEF,但那是用体积换一致性。
结语
判断它适不适合你,最快的方式就是跑一遍:npx electrobun init生成模板项目,或克隆仓库打开 kitchen/ 跑示例工程。完整 API 与指南见 docs/。
【免费下载链接】electrobunBuild ultra fast, tiny, and cross-platform desktop apps with Typescript.项目地址: https://gitcode.com/GitHub_Trending/el/electrobun
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考