目录

Pake:一条命令将任何网页变成桌面应用,比Electron轻20倍

Pake:一条命令将任何网页变成桌面应用

项目概述

Pake是由开发者twa创建的开源项目,核心功能是将任何网页通过一条命令打包成桌面应用。与传统 Electron 方案相比,Pake 打包出的应用体积小约 20 倍,性能更高,内存占用更低。

指标数值
GitHub Stars47.6k
Forks9.5k
最新版本V3.11.0 (2026-03-27)
编程语言Rust 92.4%, Dockerfile 6.9%, TypeScript 0.7%
许可证MIT
代码提交2,007 次
** Contributors**55+

官方定位:Turn any webpage into a desktop app with one command, supports macOS, Windows, and Linux


核心特性

🎐 轻量级

体积对比:Pake 打包的应用通常只有约5MB,而同等功能的 Electron 应用往往需要 50-100MB。这意味着:

  • 下载速度更快
  • 安装更便捷
  • 更新包更小,节省带宽
  • 磁盘占用更低

🚀 高性能

技术选型:基于Rust + Tauri框架构建,相比传统 JavaScript 框架具有以下优势:

// Tauri的核心优势
// 1. 直接调用系统API,无需Node.js运行时
// 2. 内存占用极低(通常50-100MB vs Electron的200-500MB)
// 3. 启动速度更快
// 4. 二进制直接分发,无需安装运行时

⚡ 易用性

三种使用方式,满足不同用户需求:

┌─────────────────────────────────────────────────────────────┐
│                    Pake 使用方式分层                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  【初学者】下载现成应用包 / GitHub Actions在线构建           │
│      ↓ 无需配置环境,直接使用                              │
│                                                             │
│  【开发者】CLI命令行一键打包                                │
│      ↓ pnpm install -g pake-cli                           │
│                                                             │
│  【高级用户】本地克隆定制开发                               │
│      ↓ git clone + pnpm install + pnpm run dev             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

📦 功能丰富

功能说明
快捷键支持支持全局快捷键,提高操作效率
沉浸式窗口原生窗口体验,无浏览器边框
拖放功能支持文件拖放到应用窗口
样式定制可自定义窗口大小、图标、背景色等
广告去除支持注入 CSS/JS 去除网页广告
多窗口管理支持新建窗口、窗口管理等

技术架构深度解析

技术栈

Pake 技术架构
├── Rust (Tauri Core)     核心框架,系统API调用
├── WebView2/RWK         系统WebView渲染网页
├── Node.js (pnpm)        构建工具链
├── TypeScript            CLI工具开发
└── Cargo/pnpm            包管理

关键组件

  1. src-tauri/ - Rust 后端核心

    • main.rs - 应用入口
    • lib.rs - 库定义
    • commands/ - Tauri 命令
    • window/ - 窗口管理
  2. bin/ - CLI 打包工具

    • cli.ts - 命令行接口
    • build.ts - 构建逻辑
  3. dist/ - 构建产物

    • 各平台的安装包输出目录

与 Electron 对比

对比维度ElectronPake (Tauri)
包大小50-200MB5-20MB
内存占用200-500MB50-150MB
启动速度3-10 秒0.5-2 秒
运行时依赖Node.js无(原生二进制)
系统 API受限完整系统权限
安全性需要手动配置默认沙箱

架构差异图

Electron架构:
┌─────────────────────────────────────────┐
│           Chromium Browser               │
│  ┌─────────────────────────────────┐   │
│  │     Node.js Runtime (45MB+)      │   │
│  │  ┌───────────────────────────┐  │   │
│  │  │    Your App (Renderer)    │  │   │
│  │  └───────────────────────────┘  │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘

Pake架构:
┌─────────────────────────────────────────┐
│           System WebView (系统自带)       │
│  ┌─────────────────────────────────┐   │
│  │      Your App (只有你+UI)         │   │
│  └─────────────────────────────────┘   │
│           Rust Binary (5MB)             │
└─────────────────────────────────────────┘

快速上手

方式一:下载现成应用(推荐新手)

Pake 官方提供了大量预构建的流行应用,直接下载即可使用:

应用macOSWindowsLinux说明
WeRead下载下载下载微信读书
Twitter下载下载下载Twitter/X
Grok下载下载下载xAI Grok
DeepSeek下载下载下载DeepSeek 官网
ChatGPT下载下载下载OpenAI ChatGPT
Gemini下载下载下载Google Gemini
YouTube Music下载下载下载YouTube 音乐
Excalidraw下载下载下载白板协作工具
XiaoHongShu下载下载下载小红书网页版

更多应用下载

方式二:CLI 命令行打包(推荐开发者)

安装 CLI 工具

# 使用pnpm全局安装
pnpm install -g pake-cli

基本用法

# 基础打包(自动获取网站图标)
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

CLI 参数说明

参数说明示例
--name应用名称--name MyApp
--icon应用图标 URL--icon https://.../icon.png
--width窗口宽度--width 1200
--height窗口高度--height 800
--hide-title-bar隐藏标题栏沉浸式体验
--user-agent自定义 User-Agent模拟移动端等

方式三:GitHub Actions 在线构建(无需本地环境)

# .github/workflows/pake.yml
name: Build Pake App

on:
  workflow_dispatch:
    inputs:
      url:
        description: 'Website URL'
        required: true
      name:
        description: 'App Name'
        required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Build with Pake
        uses: tw93/Pake@main
        with:
          url: ${{ github.event.inputs.url }}
          name: ${{ github.event.inputs.name }}

方式四:本地开发定制

环境要求

  • Rust >= 1.85
  • Node >= 22

开发步骤

# 1. 克隆项目
git clone https://github.com/tw93/Pake.git
cd Pake

# 2. 安装依赖
pnpm install

# 3. 本地开发调试
pnpm run dev  # 右键打开调试模式

# 4. 构建应用
pnpm run build

进阶用法

自定义样式

在项目根目录创建 pake.config.js

// pake.config.js
module.exports = {
  // 窗口配置
  windows: {
    width: 1200,
    height: 800,
    titleBarStyle: 'hidden', // macOS隐藏标题栏
  },
  
  // 注入CSS去除广告
  injectCSS: `
    .ad-banner { display: none !important; }
    .sidebar-ad { display: none !important; }
  `,
  
  // 注入JS增强功能
  injectJS: `
    // 禁用右键菜单
    document.addEventListener('contextmenu', e => e.preventDefault());
  `,
  
  // 图标
  icon: './assets/icon.png',
}

多窗口管理

// 创建多个窗口
const { WebviewWindow } = window.__TAURI__.window;

// 打开新窗口
const webview = new WebviewWindow('second', {
  url: 'https://example.com',
  title: '新窗口',
  width: 800,
  height: 600,
});

webview.once('tauri://created', () => {
  console.log('窗口创建成功');
});

webview.once('tauri://error', (e) => {
  console.error('窗口创建失败:', e);
});

窗口通信

// 主窗口发送消息
window.__TAURI__.event.emit('message', { 
  type: 'update', 
  data: 'Hello from main' 
});

// 子窗口接收消息
window.__TAURI__.event.listen('message', (event) => {
  console.log('Received:', event.payload);
});

应用场景分析

适用场景

场景说明示例
Web 应用桌面化将 Web 版应用变成原生体验ChatGPT、Notion
内部工具企业内部 Web 系统快速打包OA 系统、CRM
个人工具常用网页一键桌面化Twitter、YouTube
轻量级客户端不需要 Electron 的重量音乐播放器、阅读器
隐私敏感应用避免 Electron 的全量权限密码管理器

不适用场景

场景原因
需要 Node.js 原生模块Tauri 不支持 Node 原生模块
复杂系统托盘功能功能相对 Electron 有限
需要多个 BrowserWindowTauri 窗口模型不同
重度依赖 Chrome 扩展WebView 不支持扩展 API

项目结构详解

Pake/
├── src-tauri/              # Rust后端核心
│   ├── src/
│   │   ├── main.rs       # 应用入口
│   │   ├── lib.rs        # 库定义
│   │   └── commands/     # Tauri命令
│   │       ├── window.rs # 窗口控制命令
│   │       ├── app.rs    # 应用控制命令
│   │       └── config.rs # 配置命令
│   ├── Cargo.toml        # Rust依赖
│   └── tauri.conf.json   # Tauri配置
│
├── bin/                   # CLI工具
│   ├── cli.ts           # 命令行入口
│   ├── build.ts         # 构建逻辑
│   └── icon.ts          # 图标处理
│
├── dist/                 # 构建产物输出
│   ├── macos/           # macOS应用
│   ├── windows/         # Windows安装包
│   └── linux/           # Linux包
│
├── docs/                 # 文档
│   ├── cli-usage.md     # CLI使用指南
│   ├── github-actions-usage.md
│   └── advanced-usage.md # 高级用法
│
├── package.json
├── pnpm-lock.yaml
└── pake.config.js       # 用户配置文件

常见问题 FAQ

Q: 打包后的应用安全吗?

A: Pake 基于 Tauri 构建,默认使用系统 WebView(macOS 用 WKWebView,Windows 用 WebView2,Linux 用 WebKitGTK),每个应用都是独立的沙箱环境。但需要注意:

  • 应用可以访问完整的系统文件(需要用户授权)
  • 建议只从可信来源打包应用
  • 不要在打包的应用中输入敏感信息(除非是自己信任的应用)

Q: 如何处理登录状态?

A: Pake 支持 Cookie 持久化:

// 首次登录后,下次打开应用会自动保持登录状态
// 如果需要强制重新登录,可以清除应用数据

Q: 可以打包需要 WebGL 的应用吗?

A: 可以,Pake 使用的 WebView 都支持 WebGL。但如果 WebGL 性能不佳,可以考虑使用 Tauri 的 webview tag 配合原生 OpenGL。

Q: 如何调试打包后的应用?

# 开发模式启动
pnpm run dev

# 查看日志
# macOS: ~/Library/logs/tw93-Pake/
# Linux: ~/.local/share/tw93-Pake/logs/
# Windows: %APPDATA%\tw93-Pake\logs\

Q: 为什么打包的应用比预期大?

可能原因:

  1. 包含调试符号(发布版本应该用 pnpm run build --release
  2. 应用图标太大(建议 PNG 格式,256x256 即可)
  3. 多语言资源未剥离

与同类项目对比

项目体积性能易用性生态
Electron重(~100MB)一般⭐⭐⭐⭐⭐成熟
Pake轻(~5MB)优秀⭐⭐⭐⭐活跃
Flutter Web中(~30MB)优秀⭐⭐⭐一般
Tauri轻(~10MB)优秀⭐⭐⭐活跃
Neutralino.js轻(~1MB)优秀⭐⭐⭐一般

Pake 的优势

  • 专门针对"网页桌面化"场景优化
  • CLI 工具开箱即用
  • 预构建了大量流行应用
  • 文档完善,中文支持好

总结

Pake 是一个解决实际问题的开源项目:当你需要把一个网页变成桌面应用时,Electron 太重、配置复杂,而 Pake 只需要一条命令就能完成。

Pake 的核心卖点:

  1. 极简主义:一行命令,打包完成
  2. 性能优先:Rust+Tauri,小而美
  3. 开箱即用:提供现成应用包
  4. 开发者友好:CLI 工具完善

推荐使用场景

  • ✅ 将常用 Web 应用变成桌面客户端(ChatGPT、Twitter 等)
  • ✅ 快速打包内部 Web 工具
  • ✅ 创建轻量级专用客户端
  • ✅ 不适合需要复杂原生功能的场景

项目地址https://github.com/tw93/Pake


本文基于 Pake V3.11.0 版本编写,发布时间:2026-04-07