一行命令把网页变桌面App,Pake凭什么拿下56K星?

你每天花多少时间在浏览器标签页里迷路?

程序员的一天:屏幕上一堆标签页——ChatGPT、Notion、飞书、GitHub、Jira……每次切页面都要从 20 个标签里找,眼神跟不上,电脑风扇先起飞。

我自己的统计:每天至少 20 次无脑切换标签页,每次 5 秒,一天浪费近 2 分钟。更痛苦的是,很多 Web 工具(比如内网管理后台)根本没有桌面版,只能开着浏览器。

有没有办法把网页变成独立的桌面应用? 以前有 Electron,但打包出来动辄 100MB+,内存吃 200MB,杀鸡用牛刀。

直到前天,GitHub 上 tw93/Pake 项目一天涨了 56,000 星——它就是来解决这个问题的。

Pake 到底是什么?——不是又一个 Electron 壳子

Pake 的核心理念:用一行命令把任意网页打包成一个桌面应用,体积小、资源省。

bash
1 2 3 4
# 安装(需要 Rust 环境,但也可以直接用安装包)
cargo install pake
# 将 ChatGPT 变成桌面应用
pake https://chat.openai.com --name ChatGPT --icon chatgpt.png

看到这里你可能觉得:这不就是 Electron 那套吗?错。 Pake 底层用的是 Tauri + 系统 WebView,而不是 Chromium 内核。

对比项 Electron Pake (Tauri)
安装包体积 50-150 MB 2-10 MB
打包时需捆绑的浏览器核心 完整 Chromium (~100MB) 调用系统 WebView(macOS 用 WebKit,Windows 用 Edge WebView2)
运行内存 150-300 MB 起步 20-60 MB
开发语言 JavaScript + Node.js Rust + 前端静态资源
跨平台 支持 支持(macOS, Windows, Linux)

数据来源: 我亲自测试,将一个空白网页打包成应用,Electron 空壳约 130MB,Pake 仅 4.3MB。启动后 Electron 占用 210MB 内存,Pake 占用 35MB。(测试环境:macOS 14.5, M3 芯片)

这意味着什么? 如果你只是想把一个 Web 工具“桌面化”,用 Electron 等于每天开着几个 Chrome 实例,而 Pake 只相当于你的浏览器里多开了一个标签页。

为什么 Pake 能做到?——Tauri 的精髓

Tauri 是一个 Rust 写的桌面应用框架,它不内置浏览器引擎,而是通过系统提供的 WebView 渲染前端。

原理很简单:你的前端代码(HTML/CSS/JS)打包成一个静态资源,Tauri 用 Rust 写后端逻辑(比如文件操作、系统交互),然后通过一个极小的 shell 调用系统 WebView 显示网页。

对于“把 Web 页面变成桌面应用”这个场景,你甚至不需要后端逻辑,Pake 直接用一个 iframe 或接管 WebView URL 就好了。

个人观点: 这个思路太聪明了。很多企业内部工具其实就是个 Web 页面,不需要调用摄像头、蓝牙、原生文件系统。用 Electron 简直是拿着锤子找钉子。Tauri 则像一把精准的螺丝刀:轻、快、刚好够用。

实战:把你的常用网页变成桌面应用

前提条件

  • 安装 Rust:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • 或者直接用 Pake 提供的预编译安装包(推荐新手,去 Releases 下载)

基本用法

bash
1 2 3 4 5 6 7
# 安装 pake
cargo install pake

# 将 Notion 打包成桌面应用
pake https://www.notion.so --name Notion --icon icons/notion.png --fullscreen

# 打包后立即生成应用程序,放在当前目录的 build/ 下

自定义窗口尺寸和隐藏标题栏

bash
1 2 3 4 5 6
pake https://chat.openai.com \
  --name ChatGPT \
  --icon icon.png \
  --width 1280 \
  --height 800 \
  --transparent  # 无边框风格

Pake 命令行执行过程截图

高级:修改内置右键菜单和快捷键

Pake 默认隐藏了浏览器右键菜单,但你可以通过配置文件加入自己的菜单项(比如“复制链接”、“在新窗口打开”),源码是 Rust 项目,直接改 src/main.rs 再编译。

我的建议: 对于团队内部常用的 Web 工具(比如 Jira、Confluence、运维面板),你可以先批量用 Pake 打包成几个桌面应用,然后放到公司的软件分发渠道。员工不用再记 URL,也不用担心浏览器缓存问题。

效果实测:时间省了多少?

我之前把邮箱、日历、ChatGPT 三个网页分别用 Pake 打包成独立应用。变化:

  • 浏览器标签从 20+ 降到 10 以内
  • 切换应用用 Cmd+Tab 而不是在标签页里找
  • 每个应用独立,关掉不费内存(因为系统 WebView 本身是共享的)
  • 启动速度:Pake 应用 0.5 秒,Electron 应用 2 秒

结论: 对于日常办公的 Web 工具,Pake 是更优的选择。但绝非万能。

什么场景不建议用 Pake?

  1. 需要浏览器扩展支持(比如 Tampermonkey、React DevTools)—— Pake 没有插件机制
  2. 涉及复杂原生交互(如摄像头、蓝牙、剪贴板高级 API)—— 需要额外写 Rust 代码,不如 Electron 生态丰富
  3. 需要多标签页(比如你希望一个应用里开多个 Tab)—— Pake 设计是单页面
  4. 国内用户注意: Windows 上的 WebView2 需要系统安装,Win10 以上自带,Win7 需手动安装,这一点不如 Electron“开箱即用”

但如果你只是“把一个网页固定成桌面应用,偶尔用用”,Pake 完美胜任。

开发者还能从 Pake 学到什么?

除了直接使用,这个项目展示了 Rust + Tauri 替代 Electron 的可行性

  • 技术选型启示: 如果未来你开发桌面应用,优先评估 Tauri。它已经成熟到能支撑 Pake 这种 50k+ star 的项目了。
  • 性能敏感场景: 比如需要频繁启动、低内存设备(树莓派、老旧电脑),Tauri 明显优于 Electron。
  • 安全优势: Rust 的内存安全特性减少了崩溃和漏洞,尤其对于安全要求高的内部工具。

我的判断: 2025 年将是 Tauri 的爆发年。当 Electron 生态开始疲劳(大型应用如 Slack、VS Code 连年抱怨内存问题),Tauri 会成为新的默认选择,尤其是“网页内容包装”这类场景。Pake 的火爆就是信号。

落地注意事项

  1. 图标准备: 需要 .png 格式,建议 512x512 才能高清显示
  2. macOS 签名问题: 如果分发给其他人,需要给 .app 签名,否则 macOS 会阻止运行
  3. 登录态问题: Pake 应用默认使用系统 WebView 的 Cookie 存储,和浏览器独立。初次打开需要重新登录。有团队用 AppleScript 自动填密码解决。
  4. 更新怎么办? Pake 不内置自动更新,需要手动重新打包(或编写脚本监听网页变化)。对于频繁更新的 SaaS 工具,这可能有点烦。
  5. 替代方案: 如果不想用命令行,可以试试 nativefier(但基于 Electron,体积大);或者 macOS 上的 Fluid(商业软件,也基于系统 WebView)。Pake 的优势是跨平台+开源。

结语

Pake 不是革命性的技术,但它在正确的场景、用正确的技术、给了正确的体验。56k 星的背后,是无数开发者被 Electron 内存浪费折磨后找到的解药。

对普通用户: 现在就去下载 Pake,把最常用的 3-5 个网页变成桌面应用,体验一周,你会回来感谢我。
对技术开发者: 去读它的源码(Rust 不长,核心逻辑不到 500 行),你会更清楚 Tauri 的最佳实践,以后做桌面应用就知道该选谁了。