惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
S
Securelist
I
Intezer
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
P
Privacy International News Feed
Recent Announcements
Recent Announcements
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
爱范儿
爱范儿
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CERT Recently Published Vulnerability Notes
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
S
Secure Thoughts
K
Kaspersky official blog
N
News | PayPal Newsroom
O
OpenAI News
Last Week in AI
Last Week in AI
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tor Project blog
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
D
Docker
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
博客园 - 司徒正美
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
P
Palo Alto Networks Blog

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
Pake:一键将网页打包成轻量桌面应用
Cheman · 2026-06-20 · via BlogFinder

今天在 GitHub Trending 上看到一个有意思的项目:Pake,它能用一条命令将任意网页打包成桌面应用,体积只有 Electron 的 1/20,堪称网页应用桌面化的利器。

一、项目概述

Pake 是一个开源的桌面应用打包工具,核心理念是"用最简单的方式将网页变成桌面应用"。相比传统的 Electron 方案,Pake 基于 Rust 的 Tauri 框架构建,具有以下核心特性:

  • 轻量级:打包体积约 5MB,比 Electron 小近 20 倍
  • 高性能:Rust 底层实现,内存占用更低,启动更快
  • 易用性:一条命令即可完成打包,无需复杂配置
  • 功能丰富:支持快捷键、沉浸式窗口、拖拽、样式定制、广告去除等

Pake 支持三大主流操作系统(macOS、Windows、Linux),开发者无需维护多套代码,一次打包即可生成跨平台应用。项目由阿里前端工程师 tw93 开发维护,在 GitHub 上已获得广泛关注。

二、技术原理

架构设计

Pake 的技术架构基于 Tauri v2,这是 Rust 生态中最成熟的桌面应用框架之一。整体架构可以分为三层:

  1. WebView 层:使用操作系统自带的 WebView 组件渲染网页内容

    • macOS:WKWebView
    • Windows:WebView2(基于 Chromium)
    • Linux:WebKitGTK
  2. Rust 后端层:处理原生功能,如文件系统访问、系统托盘、窗口管理等

  3. 前端桥接层:通过 Tauri 的 IPC 机制实现 JavaScript 与 Rust 的通信

这种架构的优势在于:

  • 原生 WebView 直接复用系统组件,避免打包整个 Chromium
  • Rust 后端 提供高性能、内存安全的原生能力
  • 小体积运行时 仅包含必要的桥接代码

核心技术栈与选型理由

package.json 可以看到 Pake 的核心依赖:

{
  "name": "pake-cli",
  "version": "3.11.10",
  "engines": {
    "node": ">=18.0.0"
  },
  "dependencies": {
    "@tauri-apps/api": "~2.10.1",
    "@tauri-apps/cli": "^2.10.0",
    "commander": "^14.0.3",
    "execa": "^9.6.1",
    "sharp": "^0.34.5"
  }
}

选型分析:

  • Tauri v2:相比 v1 有更好的跨平台支持和性能优化,支持 edition2024
  • Commander.js:成熟的 CLI 框架,处理命令行参数解析
  • Sharp:高性能图片处理库,用于生成应用图标
  • Execa:改进的子进程管理,用于调用 Rust 编译链

构建流程

Dockerfile 可以看到完整的构建流程:

# Rust 编译阶段
FROM rust:latest AS cargo-builder
RUN rustup update stable && rustup default stable
# 安装 Linux 依赖:WebKit、GTK、OpenSSL 等
RUN apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libssl-dev

# Node.js 构建阶段
FROM rust:latest AS builder
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
RUN npm install -g pnpm
RUN pnpm install --frozen-lockfile && pnpm run cli:build

构建过程采用多阶段构建:

  1. cargo-builder:预编译 Rust 依赖,利用缓存加速后续构建
  2. builder:编译 Node.js CLI 并整合 Rust 二进制文件

图标处理机制

Pake 提供了一个实用的图标转换脚本 icns2png.py

from PIL import Image

for file in file_list:
    image = Image.open(icns_path)
    # 生成三种尺寸:512x512、256x256、32x32
    image_512 = image.copy().resize((512, 512))
    image_256 = image.copy().resize((256, 256))
    image_32 = image.copy().resize((32, 32))
    # PNG 用于 Linux/Windows,ICO 用于 Windows
    image_512.save(image_512_path, "PNG")
    image_256.save(image_256_path, "ICO")

这确保了生成的应用在不同平台都有合适的图标格式。

三、安装与快速开始

环境要求

  • Node.js >= 18.0.0(推荐 22.x LTS)
  • Rust >= 1.85(支持 edition2024)
  • 包管理器:pnpm(推荐)

安装方式

方式一:全局安装 CLI(开发者推荐)

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

# 或使用 npm
npm install -g pake-cli

方式二:下载预编译应用(普通用户)

直接从 GitHub Releases 下载已打包好的热门应用,如微信读书、Twitter、ChatGPT、DeepSeek 等。

最简使用示例

# 基础用法 - 自动抓取网站图标
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

首次打包需要编译 Rust 代码,耗时较长;后续构建会复用缓存,速度大幅提升。

四、使用方法与实战

基础用法

1. 打包任意网站

pake <url> --name <app-name>

Pake 会自动:

  • 抓取网站的 favicon 作为应用图标
  • 生成默认窗口配置
  • 构建跨平台安装包

2. 自定义图标

pake https://twitter.com --name Twitter \
  --icon ./twitter-icon.png

支持 PNG、ICNS(macOS)、ICO(Windows)等格式。

3. 调整窗口属性

pake https://youtube.com --name YouTube \
  --width 1280 \
  --height 720 \
  --transparent \
  --resizable

进阶用法

1. 沉浸式窗口

隐藏标题栏,打造类似原生应用的体验:

pake https://notion.so --name Notion \
  --hide-title-bar \
  --transparent

2. 注入自定义样式

通过 --inject-css 注入自定义 CSS:

pake https://example.com --name MyApp \
  --inject-css ./custom.css

可以用来隐藏广告、调整布局、修改主题等。

3. GitHub Actions 在线构建

无需本地环境,直接在 GitHub 上构建:

  1. Fork Pake 仓库
  2. 在 Actions 页面选择 “Build App”
  3. 输入目标 URL 和应用名
  4. 等待构建完成,下载安装包

内置快捷键

Pake 为所有打包的应用内置了丰富的快捷键:

功能macOSWindows/Linux
后退⌘ + [Ctrl + ←
前进⌘ + ]Ctrl + →
刷新⌘ + RCtrl + R
缩放⌘ + +/-Ctrl + +/-
复制 URL⌘ + LCtrl + L
清除缓存⌘ + ⇧ + ⌫Ctrl + ⇧ + Del

热门预打包应用

Pake 官方提供了多款热门应用的预编译版本:

  • 生产力工具:ChatGPT、DeepSeek、Grok、Gemini、Claude
  • 社交媒体:Twitter、小红书、即刻
  • 内容消费:微信读书、YouTube、YouTube Music
  • 工具类:Excalidraw、语雀

直接从 Releases 页面下载对应平台的安装包即可使用。

五、常见问题与解决方案

安装失败

问题:Rust 版本过低

error: Rust 1.85 required, found 1.70

解决方案:

# 更新 Rust 到最新稳定版
rustup update stable
rustup default stable

问题:Linux 缺少系统依赖

error: Package 'webkit2gtk-4.1' not found

解决方案:

# Ubuntu/Debian
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev \
  libgtk-3-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev

# Fedora
sudo dnf install \
  webkit2gtk4.1-devel \
  gtk3-devel \
  libappindicator-gtk3-devel

运行时错误

问题:macOS 提示"无法验证开发者"

"App" is damaged and can't be opened.

解决方案:

# 移除隔离属性
xattr -cr /Applications/YourApp.app

或在系统设置中允许第三方应用。

问题:Windows SmartScreen 拦截

点击"更多信息" → “仍要运行”,或使用代码签名证书签名应用。

性能问题

问题:首次打包时间长

首次构建需要编译 Rust 代码,可能需要 5-10 分钟。建议:

  • 使用 SSD
  • 确保网络畅通(需下载 Rust crates)
  • 后续构建会复用缓存,时间大幅缩短

问题:应用内存占用高

Pake 应用内存占用通常在 100-300MB,远低于 Electron(通常 500MB+)。如果仍然过高:

  • 检查网页本身是否内存泄漏
  • 使用 --disable-gpu 禁用硬件加速

兼容性

支持的平台:

  • macOS 10.15+
  • Windows 10/11(需要 WebView2 运行时,Win11 已内置)
  • Linux(需要 WebKitGTK)

不支持的场景:

  • 需要复杂原生功能的场景(建议直接开发 Tauri 应用)
  • 需要系统级权限的应用
  • 需要后台常驻的服务(Pake 应用关闭后完全退出)

六、总结

Pake 是一个优雅的"网页桌面化"解决方案,它巧妙地结合了 Rust 的性能优势和 WebView 的轻量特性,让开发者能够用一条命令将任意网页变成原生体验的桌面应用。

相比 Electron,Pake 的体积优势显著(5MB vs 100MB+),内存占用更低,启动更快。相比原生开发,Pake 的学习成本几乎为零——只要你有一个网页,就能拥有一个桌面应用。

无论是开发者想要为自己的 Web 应用提供桌面版本,还是普通用户想要将常用网站变成独立应用,Pake 都是一个值得尝试的选择。项目的开源特性和活跃的社区支持,也让它成为学习 Tauri 和 Rust 桌面开发的优秀范例。

GitHub 地址: https://github.com/tw93/Pake