SuperAPI AI 工具集

pake

编程与开发

查看项目

更新于 10-16 06:03

技能介绍

Pake 是一个将网站或本地 Web 构建产物打包为原生桌面应用的工具,底层使用 Tauri(Rust + 系统 WebView),输出体积约 5MB,相比 Electron 的约 150MB 更小。

【用途】 把任意网页或本地 Web 构建(静态目录、单个 HTML 文件)封装成桌面应用,生成对应平台的安装包或应用包。

【主要能力】

  • 支持以 URL 或本地路径作为打包目标;本地目录需在根目录包含 index.html,也支持单个 HTML 文件。
  • 支持声明式 JSON 配置(--config),字段为 camelCase 形式的 CLI 选项名加 url;显式 CLI 参数优先于配置文件字段;未知字段和类型错误会以 INVALID_INPUT 快速失败。
  • 提供 Agent 模式:传入 --json(或非 TTY stdin)会关闭所有交互式提示,日志输出到 stderr,stdout 只输出一个 JSON 结果对象,包含 ok、name、platform、arch、outputs、warnings、error 等字段。
  • 通过退出码区分结果:0 成功、2 输入无效、3 构建失败、4 环境或依赖缺失、1 意外错误;失败时 error 携带 {code, message, hint}。
  • 图标处理:未指定时自动从多个服务获取图标,也可传入本地路径或 URL;自动转换为平台格式(macOS 的 .icns、Windows 的 .ico、Linux 的 .png),macOS 图标自动加圆角遮罩。
  • 支持代理配置(--proxy-url),格式为 http://host:port 或 socks5://host:port,在构建时写入二进制,不可运行时配置。
  • 支持 --inject 注入自定义 JS/CSS;--new-window 允许弹窗认证窗口,--safe-domain 保持 SSO 回调在应用内。

【使用方式】 在 Pake 仓库检出目录内(package.json 的 name 为 pake-cli):先用 pnpm run cli:build 构建一次,然后使用 node dist/cli.js。 在其他位置:使用已发布的 CLI,通过 npm install -g pake-cli 安装后运行 pake,或用 npx pake-cli 免安装运行。 示例:pake "https://example.com" --name MyApp --json 本地内容示例:pake ./dist --name MyTool --json;pake ./page.html --name MyPage --json。 配置文件示例: cat > app.json <<'EOF' { "$schema": "https://raw.githubusercontent.com/tw93/Pake/main/schema/pake.schema.json", "url": "https://example.com", "name": "MyApp", "width": 1280, "hideTitleBar": true } EOF pake --config app.json --json 完整选项列表可运行 pake --help 或查阅上述 schema;完整参考见 https://github.com/tw93/Pake/blob/main/docs/cli-usage.md。

【适用场景】

  • 把常用网站封装为轻量桌面客户端。
  • 把 AI 生成的本地 Web 应用(静态目录或单 HTML)打包为桌面应用。
  • 在自动化脚本或智能体流程中调用,通过 --json 与退出码处理结果。

【限制与注意事项】

  • 本地打包支持 hash 路由,暂不支持 history 模式的 SPA 路由。
  • 不支持 Chrome 扩展,因为使用系统 WebView(macOS 为 WKWebView、Windows 为 WebView2、Linux 为 WebKitGTK),可用 --inject 注入自定义 JS/CSS 作为替代。
  • 依赖 OAuth 的站点:部分提供商(尤其是 Google)会阻止在嵌入式 WebView 中登录,即使使用 --new-window 和 --safe-domain 也可能无法登录。
  • 代理支持情况:Windows 完整支持(通过 --proxy-server 浏览器参数);Linux 完整支持(通过 Tauri 原生 proxy_url);macOS 需 macOS 14+(使用 Tauri 原生 macos-proxy 特性,构建时自动检测)。
  • 图标下载不使用 --proxy-url,该参数仅配置打包后应用的 WebView 代理;若图标 URL 需要代理才能访问,需先手动下载再通过 --icon 传入。
  • 构建耗时:有缓存约 40 秒,冷启动约 2 分钟;全新机器首次构建需编译 Tauri 依赖,可能超过 10 分钟。
  • Linux Wayland 输入问题:若 AppImage 在纯 Wayland 合成器(尤其是 niri)上打开但点击或键盘输入无法到达页面,先用最新 pake-cli 重新构建,再尝试 PAKE_LINUX_WEBKIT_SAFE_MODE=0 ./YourApp.AppImage;若出现空白窗口,则改回 PAKE_LINUX_WEBKIT_SAFE_MODE=1。不要仅凭 GTK、appindicator 或 GStreamer 警告判断该问题。
  • Linux 多目标构建时,ok: true 可能携带少于请求格式的 outputs,失败目标会出现在 warnings 中,需检查 outputs[].format 后再确认所有格式均已构建。
  • 仓库检出目录内若存在旧的 src-tauri/icons/<name>.icns 会被复用,需重命名或删除以强制重新获取。
  • Bundle ID 默认值为 com.pake.a{md5hash},可通过 --identifier 显式设置。
  • 退出码为 1 的 UNEXPECTED 错误应上报,不要循环重试。