把网页打包成桌面 App,5MB 就够了
把网页打包成桌面 App,5MB 就够了
一、从”Electron 疲劳”说起
前两天装了一个团队 IM 工具,安装包 300MB。
300MB。它就是一个聊天软件。装完我打开活动监视器一看,刚启动就吃了 200MB 内存。
这不是个例。我电脑上常年挂着 VS Code(对,它也是 Electron 套壳)、Slack、Discord——随便一个打开,内存占用轻松 200MB+。这些应用本质上就是个网页,塞了个浏览器壳,就变成了”桌面应用”。
Electron 确实降低了桌面应用开发的门槛——前端开发者用 HTML + CSS + JavaScript 就能写桌面应用。但代价是每个 Electron 应用都捆绑了一个完整的 Chromium 浏览器。你装一个 Electron 应用,相当于装了一个 Chrome 浏览器加上你的应用代码。装十个,就是十个 Chrome。
后来我发现了 Pake。
一个基于 Rust 和 Tauri 的开源工具,能把任意网页打包成桌面应用,安装包只有 5MB 左右。比 Electron 小了接近 20 倍。
图:Pake 打包的 ChatGPT 桌面应用,仅 5MB 左右(来源:Pake 官方仓库)
二、Electron 到底有多重?
先搞清楚一个事实:你电脑上那些”桌面应用”,很多就是个网页套了个浏览器壳。
2.1 每个 Electron 应用都捆绑了一个浏览器
Electron 的工作原理很简单:它把 Chromium 渲染引擎和 Node.js 运行时打包在一起,然后你的 HTML/CSS/JS 代码跑在这个壳里。
问题来了——Chromium 本身有多大?
一个典型的 Electron 空壳应用,啥功能没有,生成的安装包大约 120-150MB。因为 Chromium 渲染引擎、V8 引擎、各种编解码器、GPU 加速层……这些全都打包进去了。
我在同一台电脑上简单对比了几个指标:
| 对比项 | Electron 典型应用 | Pake 打包应用 | 差距 |
|---|---|---|---|
| 安装包大小 | ~120MB | ~6MB | 约 20 倍 |
| 典型内存占用 | ~200MB | ~40MB | 约 5 倍 |
| 启动时间 | ~2-3s | ~0.5-1s | 约 3-4 倍 |
这不是”优化得好一点”的差距,是量级上的差距。
2.2 Pake 的解法:Tauri 替代 Chromium
Pake 用的是 Tauri 框架——一个用 Rust 写的桌面应用框架,和 Electron 对标,但思路完全不同。
Electron 把浏览器打包进应用,Tauri 则利用系统自带的 WebView 引擎。macOS 的 WKWebView、Windows 的 WebView2、Linux 的 WebKitGTK——这些组件操作系统本身就带,不需要再打包一遍。
一个 120MB 的安装包,里面 100MB 是浏览器,剩下 20MB 才是实际功能。Pake 把前面那 100MB 砍掉了,安装包自然就降到了 5-10MB。
内存方面同理。Electron 启动一个完整的 Chromium 进程,内存开销从 100MB 起步。Pake 用的是系统 WebView,底层是 Rust 写的系统级壳,内存占用少得多。
三、Pake 是什么?
一句话概括:一个基于 Rust + Tauri 的开源工具,能把任意网页打包成极小的桌面应用。
项目地址:https://github.com/tw93/Pake
几个关键信息:
- 60.8k Star,2,292 次提交,12.4k Fork——社区活跃度很高,持续维护多年
- GPL-3.0 协议,附输出例外条款——你打包出来的应用完全归你所有,可以自由分发,不受 GPL 传染
- 14+ 个预打包应用可直接下载——WeRead、ChatGPT、Gemini、DeepSeek、YouTube Music、Notion、小红书、Twitter……装完就能用
- 跨平台支持——Win/Mac/Linux 全平台,一个命令打出三个平台的安装包
图:Pake 打包的 Gemini 桌面应用(来源:Pake 官方仓库)
它的设计哲学很简单:你给它一个网址,它给你一个桌面应用,就这一件事。
四、上手实测:一条命令打包一个应用
Pake 的使用方式分四个层次,从零门槛到高阶玩法。
方式一:直接下载预打包应用(零门槛)
不想折腾任何配置的话,直接去 GitHub 的 Releases 页面下载现成的安装包。
ChatGPT、Gemini、DeepSeek、YouTube Music、Notion、小红书……这些常用工具都有现成的打包版本。下载安装,双击打开,就是一个桌面应用。
适合:纯小白用户,不想碰命令行的任何东西
方式二:CLI 一键打包(推荐给动手党)
打开终端,跑两行命令:
pnpm install -g pake-cli
pake https://github.com --name GitHub
它会自动获取网站图标,自动生成安装包,几秒钟后你就能在桌面找到一个 GitHub 的专属桌面应用。
第一次打包需要安装 Rust 和 Node.js 环境,大概需要 10-15 分钟。但一旦装好,后续打包几乎是秒级。
我实际试了一次:选了一个平时经常打开的在线工具,跑 pake https://xxxx --name MyTool,等了大概 20 秒,安装包就生成了。一看大小——6.2MB。我盯着这个数字看了好一会儿。
双击打开,网页正常加载,快捷键正常响应,窗口可以拖拽,可以全屏。和浏览器里打开那个网站的区别?它不占浏览器标签页,不和其他网页共享内存,有自己的独立窗口和 Dock 图标。
CLI 还支持一些高级参数:
# 指定窗口尺寸
pake https://example.com --name MyApp --width 1200 --height 800
# 隐藏标题栏(沉浸式窗口)
pake https://example.com --name MyApp --hide-title-bar
# 多窗口模式
pake https://example.com --name MyApp --multi-window
适合:习惯用命令行的开发者、效率工具爱好者
方式三:在线构建(零环境配置)
不想在本地装 Rust 和 Node?没问题。
Fork 项目到你的 GitHub,配置 GitHub Actions,在云上完成打包。上传一个配置文件,GitHub 的服务器帮你编译,生成安装包后直接下载。
全程不需要在本地装任何开发环境,有浏览器就行。
适合:想用但不方便装开发环境的人(比如公司电脑没权限)
方式四:AI 友好模式
--json 输出机器可读结果,--config app.json 声明式配置,还可以打包本地构建产物:pake ./dist --name MyTool。
如果你在用 Claude Code 这类 AI 编程工具,可以直接安装官方 skill 来使用。
适合:自动化工作流、CI/CD 集成
五、打包出来的应用体验怎么样?
聊几个我实际使用后的感受。
5.1 快捷键:14 组快捷键,桌面级交互
Pake 内置了 14 组快捷键,覆盖日常操作:
| 功能 | Mac | Win/Linux |
|---|---|---|
| 放大/缩小/重置 | Cmd +/-/0 | Ctrl +/-/0 |
| 全屏 | Cmd + Shift + F | Ctrl + Shift + F |
| 后退/前进 | Cmd + [/] | Ctrl + [/] |
| 刷新 | Cmd + R | Ctrl + R |
| 复制 URL | Cmd + Shift + C | Ctrl + Shift + C |
| 打开 DevTools | Cmd + Shift + I | Ctrl + Shift + I |
| 关闭窗口 | Cmd + W | Ctrl + W |
实际体验:比浏览器标签页方便。浏览器里你要在多个标签页之间切来切去,每个网页的内存是共享的。Pake 打包出来的应用是独立的,快捷键手感更像原生应用。
5.2 沉浸式窗口
--hide-title-bar 参数可以隐藏标题栏,让内容区域更大。双击标题栏区域切换全屏。Mac 上还支持滑动导航。
这个功能对阅读类应用特别友好——比如把 WeRead 打包成桌面应用,隐藏标题栏,全屏阅读,体验比在浏览器里看舒服很多。
5.3 样式改写 + 广告移除
Pake 支持自定义 CSS,改写页面样式,移除广告元素。
举个例子:有些网站打开满屏广告,影响阅读体验。用 Pake 打包时,可以注入自定义 CSS 把广告元素隐藏掉,打造一个干净清爽的”定制版”桌面应用。
/* 注入自定义样式,隐藏广告 */
.ad-banner, .ad-sidebar { display: none !important; }
5.4 实际使用感受
我拿 Pake 打包了三个应用,用了一周:
- 启动速度:秒开。点一下 Dock 图标,几乎感觉不到”正在启动”这回事
- 内存占用:和浏览器开一个标签页差不多,好处是不占浏览器标签栏
- 稳定性:持续使用一周,没有崩溃或异常
最直观的感受是:心理负担小了很多。以前打开一个 Electron 应用,看着它几百 MB 的占用,心里总觉得”又来了”。Pake 打包出来的应用不怎么占地方——你需要的时候点开,不需要的时候关掉,不留痕迹。
六、适合什么场景?
6.1 把 AI 工具桌面化
ChatGPT、Gemini、DeepSeek、Grok——这些 AI 工具你可能每天都在用。在浏览器里开一堆标签页,切来切去,挺麻烦的。
用 Pake 把它们每个打包成一个桌面应用,独立窗口、独立图标、一键切换。配合沉浸式窗口,使用体验比浏览器标签页好。
6.2 把常用工具桌面化
- 知识管理:Notion、Flomo、WeRead
- 娱乐:YouTube Music、YouTube
- 设计:Excalidraw、Figma(网页版)
- 社交:Twitter/X、小红书
这些工具在浏览器里用没问题,但如果你每天都打开,给它们一个独立的桌面窗口会更方便。
6.3 把项目文档桌面化
如果你是一个前端开发者,可以直接把 dist 目录打包成桌面应用:
pake ./dist --name MyTool
适合:内部工具、项目演示、给不会用命令行的同事提供桌面版
6.4 一句话总结
它最适合的场景是:那些你希望有个桌面版、但没有的网页。
七、诚实说明局限
Pake 很好,但它不是万能的。以下几个点你需要知道:
7.1 不是 Electron 的完全替代品
Electron 生态有大量原生 Node 模块,Tauri 无法直接兼容。如果你需要深度系统集成——文件系统高级操作、蓝牙、USB 硬件访问、原生数据库驱动——Electron 的生态更成熟。
Pake 的定位是”把网页包装成桌面应用”,而不是”运行任意 Node.js 应用”。如果你需要的是一个完整的桌面应用开发框架,Tauri 本身更适合(因为你可以写 Rust 代码),但 Pake 作为 Tauri 的封装层,主打的是”一键打包网页”这个场景。
7.2 部分网页兼容性有限
依赖复杂 Service Worker、WebRTC、特定浏览器 API 的网站可能无法正常工作。实测建议:大部分主流网站没问题,但如果你要打包的网站用了很底层的能力,建议先试一下。
7.3 首次环境配置需要时间
如果你选择 CLI 方式,第一次需要安装 Rust 和 Node.js 环境。这个过程大约需要 10-15 分钟,不算复杂但需要一点耐心。
不过——装好之后,后续打包几乎是秒级。
不想折腾环境的,选在线构建或直接下载预打包应用,这两条路径是真正的零配置。
7.4 学习成本
如果你需要自定义样式、广告移除这些高级功能,需要了解 CSS 和页面结构。但基础打包——下载预打包应用或者用 CLI 一条命令——学习成本几乎为零。
八、总结
Pake 解决了一个很具体的问题:“把网页变成桌面应用”这件事,不应该需要 100MB 的安装包。
它用 Rust + Tauri 给出了一个轻量、快速、易用的答案。60.8k Star 的社区背书,14+ 个预打包应用,三条上手路径覆盖不同技术水平的读者——从零门槛的下载安装到一条命令的 CLI 打包,再到无需本地环境的在线构建,每个人都能找到适合自己的方式。
如果你平时经常用 Web 工具,如果你对 Electron 应用的臃肿感到疲惫,如果你希望给常用网站一个”桌面版”——试试 Pake。
从下载一个预打包应用开始,或者找自己最常用的一个网站,试试把它打包成桌面应用。你会惊讶于,原来这件事可以这么简单、这么轻。
项目信息
- 项目名称:Pake
- GitHub:https://github.com/tw93/Pake
- 协议:GPL-3.0(附输出例外)
- 技术栈:Rust + Tauri v2
- 安装命令:
pnpm install -g pake-cli - 当前 Star:60.8k
互动时间
你最想把哪个网页打包成桌面应用?评论区聊聊。
如果你有某个具体场景想用 Pake 实现,也可以告诉我——也许下一篇就是你的定制教程。
喜欢这款工具?关注「善忘技术夹」全媒体
扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。