


























分析日期:2026-06-22
项目地址:https://github.com/tw93/Pake
Pake 是由 tw93(汤威,阿里前端工程师,妙言/Miaoyan、潮流周刊、XRender 的作者)开发的开源工具,口号是 "一键打包网页生成轻量桌面应用"(Turn any webpage into a desktop app with one command)。它基于 Rust + Tauri 框架,能够将任意网页快速打包成 macOS、Windows、Linux 三平台的桌面应用。
Pake 的核心价值在于用一条命令替代传统 Electron 开发的繁琐流程,打包产物仅约 5MB,体积比 Electron 小近 20 倍,同时内存占用更低、启动速度更快。
| 项目 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/tw93/Pake |
| 作者 | tw93(汤威) |
| 许可证 | GPL-3.0(附带 Pake Output Exception,打包产出的应用归用户所有) |
| 当前版本 | V3.12.0(2026-06-21 发布) |
| 编程语言 | Rust (94.1%)、Dockerfile (5.3%)、TypeScript (0.6%) |
README 中提供了多张截图:
| 亮点 | 说明 |
|---|---|
| 体积小巧 | 打包后通常仅约 5MB,比 Electron 打包小近 20 倍 |
| 性能优异 | 基于 Rust Tauri,使用系统原生 WebView,内存占用更低,启动更快 |
| 使用简单 | 一条命令即可打包,无需复杂配置;也支持 GitHub Actions 在线构建 |
| 功能丰富 | 支持快捷键透传、沉浸式窗口、拖拽、样式定制、去广告等 |
| 跨平台覆盖 | macOS(Intel/Apple Silicon)、Windows(x64/ARM64)、Linux(deb/rpm/AppImage)全支持 |
| 社区活跃 | 54k+ Star,2,145 次提交,47 个版本持续迭代 |
| 功能 | 说明 |
|---|---|
| 命令行一键打包 | pake <url> --name <name> |
| 自动获取网站图标 | 无需手动指定 icon |
| 自定义窗口参数 | 宽高、全屏、最大化、最小尺寸、缩放级别 |
| 沉浸式标题栏(macOS) | --hide-title-bar |
| 系统托盘 | --show-system-tray、--start-to-tray |
| 无痕/隐私模式 | --incognito |
| 多实例/多窗口 | --multi-instance、--multi-window |
| CSS/JS 注入 | --inject 自定义样式和脚本 |
| 广告去除 | 通过注入 CSS 隐藏广告元素 |
| 代理支持 | HTTP/HTTPS/SOCKS5 代理 |
| WASM 支持 | --wasm 支持 Flutter Web 等场景 |
| 拖拽支持 | --enable-drag-drop |
| macOS 权限 | 支持 --camera、--microphone |
| 本地文件打包 | --use-local-file 打包本地 HTML 应用 |
| 在线构建 | 通过 GitHub Actions 无需本地环境即可打包 |
| Mac | Windows/Linux | 功能 |
|---|---|---|
⌘ + [ |
Ctrl + ← |
返回上一页 |
⌘ + ] |
Ctrl + → |
前进下一页 |
⌘ + ↑ |
Ctrl + ↑ |
滚动到页面顶部 |
⌘ + ↓ |
Ctrl + ↓ |
滚动到页面底部 |
⌘ + r |
Ctrl + r |
刷新页面 |
⌘ + w |
Ctrl + w |
隐藏窗口(非退出) |
⌘ + - |
Ctrl + - |
缩小页面 |
⌘ + = |
Ctrl + = |
放大页面 |
⌘ + 0 |
Ctrl + 0 |
重置缩放 |
⌘ + L |
Ctrl + L |
复制当前 URL |
⌘ + ⇧ + ⌥ + V |
Ctrl + Shift + V |
粘贴并匹配样式 |
⌘ + ⇧ + H |
Ctrl + Shift + H |
回到首页 |
⌘ + ⌥ + I |
Ctrl + Shift + I |
开发者工具(仅 Debug 模式) |
⌘ + ⇧ + ⌫ |
Ctrl + Shift + Del |
清除缓存并重启 |
双标题栏可切换全屏,Mac 支持手势前进/后退,拖拽标题栏移动窗口。
通过 default_app_list.json 定义,共 15 个应用,可在 Release 页面直接下载:
| 编号 | 应用名称 | 类型 | URL |
|---|---|---|---|
| 1 | WeChat(微信) | 社交 | wx.qq.com |
| 2 | DeepSeek | AI | chat.deepseek.com |
| 3 | Grok | AI | grok.com |
| 4 | Gemini | AI | gemini.google.com |
| 5 | ChatGPT | AI | chatgpt.com |
| 6 | Twitter(推特) | 社交 | x.com |
| 7 | YouTube | 视频 | youtube.com |
| 8 | YouTube Music | 音乐 | music.youtube.com |
| 9 | WeRead(微信读书) | 阅读 | weread.qq.com |
| 10 | XiaoHongShu(小红书) | 社交 | xiaohongshu.com |
| 11 | Excalidraw | 工具 | excalidraw.com |
| 12 | ProgramMusic | 音乐 | musicforprogramming.net |
| 13 | LiZhi(李志) | 音乐 | lizhi.dengdengju.com |
| 14 | Flomo(浮墨) | 笔记 | v.flomoapp.com |
| 15 | Qwerty | 工具 | qwerty.kaiyi.cool |
| 层级 | 技术 |
|---|---|
| 后端框架 | Tauri 2.x(Rust) |
| CLI 工具 | TypeScript + Node.js,使用 Rollup 打包 |
| 包管理 | pnpm 10.x |
| WebView 渲染 | 系统原生 WebView(macOS: WKWebView、Windows: WebView2、Linux: WebKitGTK) |
| 图标处理 | sharp、icon-gen |
| CLI 框架 | commander |
| 测试 | vitest |
| 代码格式化 | prettier、cargo fmt |
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| Node.js | >= 18.0.0(推荐 >= 22.0.0 LTS) | CLI 运行环境 |
| Rust | >= 1.85.0 | Tauri 编译环境(CLI 会自动尝试安装) |
| pnpm | >= 10.x | 包管理器 |
| macOS | Xcode Command Line Tools | xcode-select --install |
| Windows | Visual Studio Build Tools 2022 (>=17.2) + Windows 10 SDK | 需要 C++ 构建工具 |
| Linux | libwebkit2gtk-4.1-dev、libgtk-3-dev 等 | 多个系统依赖包 |
运行时依赖:
@tauri-apps/api ~2.10.1@tauri-apps/cli ^2.10.0CLI 依赖:
commander ^14.0.3:命令行参数解析chalk ^5.6.2:终端彩色输出ora ^9.3.0:终端加载动画execa ^9.6.1:子进程管理sharp ^0.34.5:图标处理icon-gen ^5.0.0:图标生成file-type ^21.3.0:文件类型检测# 安装 CLI(全局)
pnpm install -g pake-cli
# 或从源码使用
git clone https://github.com/tw93/Pake.git
cd Pake
pnpm i
pnpm run dev # 本地开发(右键打开调试)
pnpm run build # 打包应用
# 基础打包(自动获取网站图标)
pake https://github.com --name GitHub
# 高级打包(自定义参数)
pake https://weekly.tw93.fun --name Weekly \
--icon https://cdn.tw93.fun/pake/weekly.icns \
--width 1200 --height 800 \
--hide-title-bar
# 沉浸式窗口 + 系统托盘
pake https://chat.deepseek.com --name DeepSeek \
--hide-title-bar --show-system-tray
# 无痕模式
pake https://x.com --name Twitter --incognito
# 打包本地文件
pake ./dist --name MyApp --use-local-file
Pake/
├── bin/ # CLI 源码(TypeScript)
│ ├── builders/ # 平台特定构建器
│ ├── helpers/ # 工具函数
│ └── options/ # CLI 选项处理
├── docs/ # 项目文档
│ ├── cli-usage.md # CLI 使用指南
│ ├── advanced-usage.md # 高级用法
│ ├── faq.md # 常见问题
│ └── github-actions-usage.md # 在线构建指南
├── src-tauri/ # Tauri 应用核心(Rust)
│ ├── src/
│ │ ├── app/ # 核心模块(窗口、托盘、快捷键)
│ │ ├── inject/ # 网页注入逻辑(CSS/JS)
│ │ │ ├── style.js # 自定义样式注入
│ │ │ └── event.js # 事件/快捷键注入
│ │ └── lib.rs # 应用入口
│ ├── icons/ # macOS 图标 (.icns)
│ ├── png/ # Windows/Linux 图标 (.ico, .png)
│ ├── pake.json # 应用配置
│ └── tauri.*.conf.json # 平台特定配置
├── scripts/ # 构建和工具脚本
├── tests/ # 测试套件
├── dist/ # 构建输出
├── default_app_list.json # 预设常用应用列表
├── package.json # 版本 3.12.0
├── rollup.config.js # Rollup 打包配置
├── rust-toolchain.toml # Rust 工具链版本锁定
└── Dockerfile # Docker 构建支持
bin/ — CLI 工具(TypeScript)TypeScript 编写的命令行入口,负责:
pake.json)src-tauri/ — Tauri 应用核心(Rust)Rust 编写的桌面应用核心,管理:
src-tauri/src/inject/ — 注入系统向网页注入自定义 CSS 和 JS:
bin/builders/ — 平台构建器平台特定的构建逻辑:
.dmg / .app.msi / .exe.deb / .rpm / .AppImagedefault_app_list.json — 预设应用列表定义 15 个常用应用的打包配置,包含名称、URL、图标等信息,Release 页面可直接下载。
用户执行 pake <url> --name <name>
│
├── 1. CLI 解析参数(commander)
├── 2. 获取网站图标(sharp + icon-gen)
├── 3. 动态生成 pake.json 配置
├── 4. 生成 Tauri 平台配置(tauri.*.conf.json)
├── 5. 调用 cargo build 编译 Rust 应用
├── 6. 编译产物注入配置和图标
└── 7. 打包为平台安装包(dmg/msi/deb)
┌─────────────────────────────────────┐
│ CLI 层 │
│ TypeScript (commander) │
│ 参数解析 · 图标获取 · 配置生成 │
├─────────────────────────────────────┤
│ Tauri 应用层 │
│ Rust (Tauri 2.x) │
│ 窗口管理 · 托盘 · 快捷键 · WebView │
├─────────────────────────────────────┤
│ 注入层 │
│ CSS/JS 注入 │
│ 样式定制 · 广告去除 · 事件增强 │
├─────────────────────────────────────┤
│ 系统层 │
│ macOS: WKWebView │
│ Windows: WebView2 │
│ Linux: WebKitGTK │
└─────────────────────────────────────┘
// 简化的核心逻辑
fn main() {
tauri::Builder::default()
// 窗口配置
.setup(|app| {
let window = app.get_window("main").unwrap();
// 设置窗口大小、位置、标题栏等
Ok(())
})
// 系统托盘
.system_tray(SystemTray::new())
// 快捷键注册
.on_menu_event(|event| {
// 处理快捷键事件
})
// 注入 CSS/JS
.on_page_load(|webview, _| {
// 注入自定义样式和脚本
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
| 文件 | 功能 |
|---|---|
bin/ |
CLI 入口,TypeScript 编写 |
bin/builders/ |
平台特定构建器 |
bin/helpers/ |
工具函数 |
bin/options/ |
CLI 选项处理 |
src-tauri/src/lib.rs |
Tauri 应用入口 |
src-tauri/src/app/ |
窗口、托盘、快捷键管理 |
src-tauri/src/inject/style.js |
自定义样式注入 |
src-tauri/src/inject/event.js |
事件/快捷键注入 |
src-tauri/pake.json |
应用配置 |
src-tauri/tauri.*.conf.json |
平台特定配置 |
default_app_list.json |
预设应用列表 |
package.json |
项目配置(v3.12.0) |
rollup.config.js |
Rollup 打包配置 |
| 场景 | 描述 | 示例 |
|---|---|---|
| AI 工具桌面化 | 将 AI 对话工具打包为独立桌面客户端 | ChatGPT、DeepSeek、Grok、Gemini |
| 社交媒体桌面版 | 将 Web 版社交平台打包为桌面应用 | 微信、Twitter、小红书 |
| 视频/音乐播放器 | 将视频音乐平台打包为独立播放器 | YouTube、YouTube Music |
| 生产工具 | 将 Web 工具打包为桌面应用 | Excalidraw 白板、Flomo 笔记、Qwerty 写作 |
| 内部工具 | 将公司内部 Web 系统打包成桌面应用分发 | 内部管理系统、数据看板 |
| 本地 Web 应用 | 打包本地 HTML/CSS/JS 为独立桌面应用 | 前端项目打包展示 |
| Flutter Web 应用 | 通过 --wasm 支持 Flutter Web 桌面化 |
Flutter Web 项目打包 |
| 对比维度 | Pake (Tauri) | Electron |
|---|---|---|
| 包体积 | ~5MB | ~100-180MB |
| 体积差异 | 小约 20 倍 | 大 20 倍 |
| 运行时 | 系统原生 WebView(无需内置浏览器) | 内置 Chromium(~130MB) |
| 后端语言 | Rust | Node.js |
| 内存占用 | 低(共享系统 WebView) | 高(独立 Chromium 实例) |
| 启动速度 | 快 | 较慢 |
| 开发语言 | Rust + TypeScript | JavaScript/TypeScript |
| 跨平台 | macOS、Windows、Linux | macOS、Windows、Linux |
| WebView 一致性 | 依赖系统 WebView(不同 OS 有差异) | 内置 Chromium(行为一致) |
| 使用门槛 | 一条命令打包,无需前端开发 | 需要前端开发经验 |
| 扩展性 | 通过 CSS/JS 注入定制 | 完整的 Node.js API |
| 优点 | 说明 |
|---|---|
| 极致轻量 | 5MB 级别,下载安装快,磁盘占用少 |
| 性能优秀 | Rust 后端 + 原生 WebView,内存和 CPU 占用远低于 Electron |
| 使用门槛极低 | 一条命令即可,小白也能用;在线构建无需任何环境 |
| 功能丰富 | 快捷键、托盘、无痕模式、多窗口、CSS/JS 注入等 |
| 社区活跃 | 54k+ Star,2,145 次提交,47 个版本,持续迭代 |
| 跨平台覆盖好 | 三大桌面平台全支持,且支持 x64/ARM64 多架构 |
| 开源许可友好 | GPL-3.0 但打包产物完全归用户所有(Pake Output Exception) |
| 预设应用丰富 | 15 个常用应用可直接下载使用,涵盖 AI、社交、视频、工具等 |
| 在线构建支持 | GitHub Actions 在线构建,无需本地环境 |
| 多架构支持 | macOS Intel/Apple Silicon/Universal,Windows x64/ARM64,Linux x86_64/ARM64 |
| 不足 | 说明 |
|---|---|
| WebView 兼容性差异 | 依赖系统原生 WebView,不同 OS 的渲染效果可能不一致(macOS WKWebView vs Windows WebView2 vs Linux WebKitGTK) |
| 功能受限 | 本质是"网页套壳",无法像 Electron 那样使用完整的 Node.js API 进行深度系统集成 |
| Rust 环境依赖 | 本地开发需安装 Rust 工具链,对前端开发者有一定学习成本 |
| 首次打包较慢 | 需要下载 Rust 依赖和编译,后续打包才快(在线构建可规避) |
| Linux 依赖复杂 | 需要安装大量系统库(libwebkit2gtk、libgtk 等) |
| 不支持移动端 | 仅桌面平台,不支持 iOS/Android |
| 部分网页兼容性 | 某些强依赖浏览器特性的网页(如 Google 登录检测嵌入式 WebView)可能无法正常工作 |
| 无离线打包缓存 | 每次打包都需要重新编译 Rust 代码(可通过 GitHub Actions 缓存优化) |
| 调试能力有限 | 仅 Debug 模式支持开发者工具,生产环境调试困难 |
| GPL-3.0 协议 | 对商业二次开发有一定限制(但打包产物不受影响) |
Pake 是 tw93 开发的一款 Rust + Tauri 驱动的网页打包工具,其核心价值在于:
项目采用 CLI 层(TypeScript)+ Tauri 应用层(Rust)+ 注入层(CSS/JS)+ 系统层(原生 WebView)的四层架构,通过系统原生 WebView 替代 Chromium 实现了体积和性能的革命性突破。对于希望将网页快速桌面化的开发者,Pake 是目前最便捷的选择。
主要短板在于 WebView 兼容性差异(不同 OS 渲染效果可能不一致)、功能受限(无法深度系统集成)、以及不支持移动端。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。