Pake:一行命令把任意网页变成桌面 App,比 Electron 小 20 倍
Pake:一行命令把任意网页变成桌面 App,比 Electron 小 20 倍
一、你是不是也这么干过?
打开 ChatGPT 想用一下,先开浏览器,再开一个 tab;想听 YouTube Music,开浏览器;想读微信公众号,开浏览器;想刷小红书,开浏览器……
你的任务栏上,Chrome 永远挂着十几个 tab,每个 tab 都在抢内存、抢焦点、抢 Cookie 状态。打开 Chrome 任务管理器一看:
Renderer: 1.2 GB
GPU Process: 380 MB
标签页 × 24
更让人抓狂的是,有些网页没有原生客户端 —— 你想把它固定到 Dock 图标上一键启动?做不到。你想脱离浏览器专注用某一个网站?做不到。
如果我告诉你,只要一行命令,就能把任意网页变成一个不到 5MB 的独立桌面 App,像原生 App 一样启动、像原生 App 一样常驻 Dock、还能去掉广告、自定义样式呢?
今天 GitHub Trending 第 2 名,正是干这件事的 ——tw93/Pake,50k+ stars,今天单日新增 2,546 stars。
二、项目背景:为什么 Electron 不够好?
在聊 Pake 之前,先说一个老问题:怎么把网页变成桌面 App?
主流方案一直是 Electron。VS Code、Slack、Notion、Discord、WhatsApp…… 半个互联网的桌面端都是它。但 Electron 有三个绕不开的毛病:
- 包体积巨大:一个最简单的 Electron Hello World,打包出来就 150MB+。VS Code 的安装包 300MB 是基操。
- 内存占用高:每个 Electron 应用都要打包一套 Chromium 运行时。开个 Slack 跟开个 Chrome 没区别。
- 启动慢:因为要启动一个完整的浏览器内核,” 双击图标 → 看到内容” 通常要等 3-5 秒。
这是因为 Electron 的本质是 “Node.js + Chromium + Web 前端”。它把整个浏览器塞进你的应用里。
Tauri 的出现就是为了解决这个问题。它用 操作系统原生的 WebView(macOS 上是 WKWebView、Windows 上是 WebView2、Linux 上是 WebKitGTK)替代 Chromium,运行时只剩薄薄一层 Rust 内核。结果是:
- 安装包 5MB 左右
- 内存占用是 Electron 的 1/3 到 1/2
- 启动速度接近原生 App
Pake 就是基于 Tauri 的” 成品工具”—— 你不用懂 Rust,不用懂 Tauri,一条命令就把网页变成桌面 App。
三、核心功能详解
3.1 一行命令打包
1 | # 安装 CLI |
这条命令会自动:
- 抓取网站 icon
- 拉取网页内容
- 用 Tauri 编译成原生应用
- 输出
.dmg(macOS)/.msi(Windows)/.deb(Linux)
你什么都不用做,等编译完双击装上就行。
3.2 包体积只有~5MB,比 Electron 小 20 倍
对比一下同样把 ChatGPT 变成桌面 App 的方案:
| 方案 | 安装包大小 | 内存占用(空闲) | 启动时间 |
|---|---|---|---|
| Electron + Web 封装 | ~150MB | ~250MB | 3-5 秒 |
| Pake(Tauri) | ~5MB | ~60MB | < 1 秒 |
这不是优化,是代际差异。底层运行时从 Chromium 换成系统原生 WebView,体积和性能自然断崖式下降。
3.3 丰富的快捷键和原生体验
Pake 不只是套个壳,它给每个打包出来的 App 都内置了一套贴近原生的快捷键:
| Mac | Windows/Linux | 功能 |
|---|---|---|
| ⌘ + [ | Ctrl + ← | 返回上一页 |
| ⌘ + ] | Ctrl + → | 前进下一页 |
| ⌘ + ↑ / ↓ | Ctrl + ↑ / ↓ | 一键滚到顶 / 底 |
| ⌘ + r | Ctrl + r | 刷新 |
| ⌘ + w | Ctrl + w | 隐藏窗口(不是退出) |
| ⌘ + L | Ctrl + L | 复制当前页面 URL |
| ⌘ + ⇧ + ⌥ + V | Ctrl + Shift + V | 粘贴并匹配样式 |
| ⌘ + ⌥ + I | Ctrl + Shift + I | 打开 DevTools(调试用) |
| ⌘ + ⇧ + ⌫ | Ctrl + Shift + Del | 清缓存并重启 |
特别要说一句 ⌘ + w 隐藏而非退出 —— 这是 macOS 原生 App 的标准行为,浏览器不是这样,但所有原生 Mac App 都这样。Pake 帮你把这个细节做到位了。
3.4 沉浸式窗口 + 样式自定义
Pake 默认是沉浸式标题栏(macOS 上直接吃掉红绿黄三颗按钮的横条),整个窗口都是网页内容,视觉非常干净。
如果你想自定义更狠,可以:
1 | pake https://weekly.tw93.fun \ |
还可以注入自定义 CSS、注入 JS、屏蔽广告 —— 这是 Pake 文档里的”Advanced Usage”。
3.5 12+ 开箱即用的现成 App
Pake 官方直接提供了 12+ 常用 App 的预编译包,下载即用:
- 🇨🇳 微信读书、小红书、知乎
- 🤖 ChatGPT、Grok、DeepSeek、Gemini
- 🐦 Twitter (X)
- 🎵 YouTube、YouTube Music、荔枝、ProgramMusic
- 🎨 Excalidraw
每个 App 都做了 macOS / Windows / Linux 三端适配。这是 Pake 的” 流量入口”—— 大多数人用 Pake 都是先装一个 ChatGPT App 开始,然后一发不可收拾。
3.6 完全本地、隐私安全
跟 Electron 不同,Tauri 的 Rust 后端和前端 WebView 是隔离的:
- 没有远程 CDN 注入
- 没有匿名遥测
- 网页的所有 JS 沙箱化运行
- 你想审计源码,直接 clone 仓库看 Rust 代码
Pake 的作者 tw93(淘气的小五)是个国内独立开发者,在前端社区很有名,口碑极好。
四、实战示例:5 分钟把你的 ChatGPT 变成桌面 App
步骤 1:装环境(一次性)
macOS:
1 | # 装 Rust |
Windows:装 Rust + Node.js LTS + Microsoft Visual Studio C++ Build Tools(勾选” 使用 C++ 的桌面开发” 工作负载)。
Linux:
1 | sudo apt install -y libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev |
步骤 2:装 Pake CLI
1 | pnpm install -g pake-cli |
步骤 3:打包你的第一个 App
1 | pake https://chat.openai.com --name ChatGPT |
第一次跑会下载 Tauri 依赖、编译 Rust 核心,大约 3-5 分钟。之后会输出:
- macOS:
ChatGPT_0.1.0_aarch64.dmg(Apple Silicon) - macOS:
ChatGPT_0.1.0_x64.dmg(Intel) - Windows:
ChatGPT_0.1.0_x64.msi - Linux:
ChatGPT_0.1.0_amd64.deb
双击装上,Dock 上多一个 ChatGPT 图标,点开就是一个没有浏览器外壳、没有 tab、没有地址栏的纯净 ChatGPT。
步骤 4:批量打包你的常用站点
我个人的 ~/.pake-batch.sh:
1 |
|
跑一遍,下班回来所有 App 都装好了。
步骤 5:高级玩法 —— 去掉广告
把网页变成 App 之前,Pake 允许你注入 CSS。把这段放进 inject.css:
1 | /* 屏蔽 YouTube Shorts 按钮 */ |
打包命令:
1 | pake https://www.youtube.com \ |
得到一个去广告的 YouTube 桌面客户端。
五、与同类项目的差异
把 Pake 放在” 网页 → 桌面 App” 这条赛道里看:
| 项目 | 技术栈 | 包体积 | 上手难度 | 维护状态 |
|---|---|---|---|---|
| Electron | Chromium + Node.js | ~150MB | 中(要写 JS) | 主流 |
| Neutralinojs | 系统 WebView | ~5MB | 中(要写 JS) | 小众 |
| WebView2 (微软) | Windows Only | ~2MB | 高(要写 C#) | 微软自家 |
| Pake | Tauri (Rust + 系统 WebView) | ~5MB | 极简(一行命令) | ⭐ 50k stars,活跃 |
| nativefier(已弃坑) | Electron | ~150MB | 简单 | 停更 |
Pake 的差异化非常清楚:门槛最低的 Tauri 封装。
- Tauri 是底层技术,Pake 是上层产品。
- 如果你想自己写功能(菜单、托盘、文件系统访问),用 Tauri 直接做。
- 如果你只想把网页变 App,用 Pake,啥都不用学。
六、适用场景与限制
适合用 Pake 的人
- ✅ 想把高频使用的网页变成桌面 App(ChatGPT、Notion、Gemini、YouTube Music)
- ✅ 不想装一堆臃肿的官方客户端(比如某些 App 没有 Linux 版,网页反而最干净)
- ✅ 受够了 Chrome 几百个 tab,想把工作场景分窗口
- ✅ 想自己做一个只服务于自己的小工具(把内部 BI 仪表盘打包成 App)
目前不适合的场景
- ❌ 需要深度系统集成的场景(文件拖拽、系统通知、托盘菜单、自动启动)—— 这些 Tauri 原生能做,但 Pake CLI 没暴露简单开关
- ❌ 想把复杂的 SPA 应用(带 SSR、复杂状态管理)打包 —— 这种建议直接用 Tauri 自己开发
- ❌ macOS App Store 上架 —— Pake 用的 GPL-3.0 + “Pake Output Exception” 许可,你自己打包出来的 App 可以商用(包括闭源),但 Pake 源码本身需要保留开源
一个小坑
如果你打包的网页重度依赖 Service Worker 或 Web Bluetooth / WebUSB 等 Web API,Pake 包装出来可能表现不一致。这是 Tauri/WebView 跟 Chrome 的固有差异,不是 Pake 的 bug。
七、总结
Pake 不是一个” 性感” 的项目 —— 它不训练模型,不生成视频,不重新定义 AI。但它解决了几乎每个开发者都遇到过的痛点:
“我能不能把这个网页固定到 Dock 上,一键启动,背景跑着不占资源?”
答案是:能,一条命令。
如果今天你要装一个工具,强烈建议先把你的 ChatGPT 打包成本地 App:
1 | pnpm install -g pake-cli |
你会发现,从此以后打开 ChatGPT 不再是” 开 Chrome → 翻 5 个 tab → 找到 ChatGPT tab”,而是 点 Dock 图标 → 立即进入。
这 5MB 的安装包,可能是你今天装过的最有 ROI 的工具。
GitHub: tw93/Pake
License: GPL-3.0 + Pake Output Exception(你打包出来的 App 自由商用)
技术栈: Rust + Tauri + 系统原生 WebView
今日 Trending 排名: 第 2 名,单日新增 2,546 stars(截至 2026-06-21)