Pake 使用 Tauri 把远程网页、本地 HTML 文件或静态站点目录封装成 macOS、Windows 和 Linux 桌面应用。真正的使用难点不是记住一条 pake URL,而是确认 Node、Rust 和平台构建依赖齐全,并验证登录、跳转、下载、摄像头等网站能力在系统 WebView 中是否仍然可用。
项目地址:
快速结论
- 推荐使用 Node.js 22,最低要求为 18;CLI 构建还需要 Rust 1.85+。
- 第一次构建会下载和编译依赖,明显慢于后续构建,不能把等待误判成卡死。
- 自动化或 Agent 调用应加入
--json,不要靠匹配自然语言日志判断成功。 - Pake 不能绕过网站对嵌入式 WebView、第三方 Cookie、SSO 或浏览器扩展的限制。
检查环境并安装 Pake CLI
先检查版本:
|
|
Node 低于 18 或 Rust 低于 1.85 时,先升级环境。推荐安装命令:
README 给出的命令:
|
|
也可以直接用 npm:
|
|
安装后必须验证当前终端找到的是预期版本:
|
|
全局安装遇到权限问题时,可先用 npx pake-cli [url] [options],不要直接使用管理员权限覆盖系统 Node 目录。
第一次打包使用公开简单页面
把 GitHub 打包成桌面应用:
|
|
Pake 默认把产物写到当前目录。第一次运行可能安装 Rust 或平台组件;命令结束后检查退出码和实际安装包,而不是只看日志里出现 success。
自动化环境建议使用结构化输出:
|
|
标准输出应是一份可解析的 JSON。非零退出、JSON 解析失败或 JSON 中没有产物路径,都应视为构建失败。
自定义图标、窗口与目标平台
README 里给了更完整的示例:
|
|
需要注意平台差异:
--hide-title-bar只适用于 macOS。- Windows/Linux 隐藏系统装饰应使用
--hide-window-decorations。 --targets用于选择 DMG、AppImage、DEB、RPM 或目标架构,具体可用值依赖当前系统。- 图标可以是本地或远程文件,Pake 会转换为平台格式;下载失败时应改用本地文件排除网络问题。
例如在 macOS 只生成便于测试的 .app:
|
|
Linux 打包 AppImage:
|
|
不要在一台系统上假设可以无配置地生成所有平台安装包。跨架构构建还需要对应 Rust target 和系统工具链。
打包本地静态站点
Pake 可以直接接收包含 index.html 的构建目录:
|
|
目录输入会打包完整文件树。单个 HTML 文件若需要一并复制旁边资源,应按官方说明使用 --use-local-file:
|
|
本地 SPA 的 Hash 路由可直接工作;History 模式路由并不等同于普通 Web 服务器,深层路径刷新前必须实测。
用配置文件固定可重复构建
参数较多时,使用 JSON 配置比不断复制长命令更容易审计:
|
|
把 app.json 纳入版本控制,但不要写入网站登录 Cookie、Token 或内部临时地址。构建记录至少保留 Pake 版本、Node 版本、Rust 版本、目标平台和产物校验值。
验证桌面应用而不是只验证安装包
安装或打开构建产物后,按网站真实用途逐项检查:
- 首屏能加载,证书和代理没有报错。
- 登录完成后重启应用,确认会话是否按预期保留。
- 外部链接是在应用内还是系统浏览器打开,行为符合安全边界。
- 文件上传、下载、剪贴板和拖放能否工作。
- 快捷键、窗口缩放和系统托盘没有与网页自身冲突。
如果是视频会议站点,macOS 还要显式声明权限:
|
|
这些参数不能保证网站一定允许 WebView 登录或调用设备,只是为应用添加相应权限声明。
登录、SSO 和跳转失败怎么查
先用调试模式重建:
|
|
打开开发者工具查看 Console 和 Network。常见边界包括:
- 身份提供商拒绝嵌入式 WebView。
- 第三方 Cookie 或跨域存储被限制。
- OAuth 回调跳到另一个域名,被默认交给系统浏览器。
- 网站依赖浏览器扩展或多标签页。
需要保留可信 SSO 域名时,可以评估 --safe-domain:
|
|
不要使用过宽的域名规则把所有链接强制留在应用内。SSO 服务明确拒绝 WebView 时,继续扩大导航范围也无法修复。
构建失败的判断顺序
| 阶段 | 典型现象 | 处理方式 |
|---|---|---|
| CLI 未找到 | pake: command not found |
检查 npm/pnpm 全局 bin 是否进入 PATH,或用 npx pake-cli |
| Rust 初始化失败 | 找不到 rustc、下载超时 |
单独安装 Rust,重新打开终端后验证版本 |
| 平台依赖缺失 | Tauri bundler、WebKitGTK 或打包器报错 | 安装当前系统所需依赖,不要反复重装 pake-cli |
| 图标处理失败 | 下载失败、格式转换失败 | 改用本地 PNG/ICO/ICNS,再单独验证网络 |
| 网站白屏 | 构建成功但运行时无内容 | 用 --debug 检查 CSP、证书、JS 和 WebView 兼容性 |
| 登录循环 | 登录成功后又回到入口 | 检查 Cookie、回调域名和身份提供商 WebView 政策 |
如何恢复到最小可用构建
排错时先保留失败命令和版本输出,然后回到最简单的公开 URL:
|
|
如果最小样本成功,说明工具链基本正常,问题更可能在目标网站、图标或额外参数。随后每次只加一个选项。若最小样本也失败,再处理 Node、Rust 或平台依赖。
升级 CLI 后出现回归时,不要覆盖旧产物。记录当前版本并在隔离目录重建同一个 smoke test;只有新旧版本差异可重复出现时,才判断为 CLI 回归。
本地开发
如果你想改 Pake 本身:
|
|
本地开发:
|
|
构建应用:
|
|
开发 Pake 本身与使用 CLI 不是同一条路径。官方当前推荐 Node.js 22,并要求 Rust 1.85+。普通用户只为封装网页时,不需要克隆仓库执行这组三条命令。
发布前验收
发布给其他人之前,应在干净账号或测试机器完成以下检查:
--json返回成功且产物路径真实存在。- 安装、启动、退出和卸载均正常。
- 登录、回调、上传下载与外链行为符合预期。
- 没有把内部 Token、Cookie 或调试入口打进应用。
- 记录 Pake、Node、Rust 版本以及目标架构。
- 保留上一份可工作的安装包,以便新版网站或 CLI 发生回归时恢复。
Pake 很适合文档站、监控面板和固定使用的 Web 工具,但不等于完整浏览器。先用 --debug 和最小 smoke test 证明目标网站适合 WebView,再做图标、托盘、窗口和权限定制,才能避免“安装包生成成功、应用却不能用”的假完成。