本地打包 30 秒——为什么不需要装任何依赖
本地打包 vs 云端打包的根本区别
PakePlus 的"本地打包"功能经常被误读——很多人以为"本地打包 = 本地装 Rust + Tauri CLI + 编译",但 PakePlus 的文档明确说:
本地打包不需要安装任何依赖环境。
这和传统的 Tauri CLI 路线完全不同。
30 秒出包的前提
"30 秒"是一个理想数字,实际取决于几个因素:
| 因素 | 理想值 | 实际值 |
|---|---|---|
| PakePlus 首次使用 | — | 需要下载内置编译工具链(一次,后续缓存) |
| 目标平台 | 当前系统 | 跨平台(需要额外下载) |
| 产物大小 | 小(<10MB) | 大(Unity WebGL 产物几百 MB) |
| 系统空闲度 | 完全空闲 | 同时跑其他重负载任务 |
| 实际典型耗时 | 30 秒 | 1-3 分钟(首次)/ 30-60 秒(后续) |
为什么不需要装依赖
PakePlus 的本地打包能做到"零依赖",背后的实现思路大致是:
内置轻量编译器
PakePlus 客户端本身是一个完整的 Tauri 应用,它可能内置了:
- 一个裁剪版的 Rust 编译工具链(只保留 Tauri 需要的部分)
- Tauri CLI 的本地实例
- WebView 相关的编译链接库
- 打包器(NSIS 安装程序、pkgbuild 等)
这些都打包在 PakePlus 客户端里,用户不需要单独安装 rustc、cargo、WebKitGTK 等。
首次使用时下载缓存
首次本地打包时,PakePlus 可能会在后台下载一些运行时依赖(比如 WebView2 Runtime 的最小化安装包、各系统的图标处理库)。下载一次后缓存在本地(PakePlus 的用户数据目录里),后续打包直接复用。
编译目标是单一平台
云端打包一次出多平台(Windows + macOS + Linux),本地打包只出当前系统这一个平台——编译工作量小很多。
本地打包 vs 云端打包的耗时对比
| 打包方式 | 等待时间 | 依赖 |
|---|---|---|
| 本地打包 | 30-60 秒 | 零依赖 |
| 云端打包 | 3-10 分钟 | 需要 GitHub Token + 网络通畅 |
本地打包在速度上碾压云端,但牺牲了跨平台能力。
本地打包的产物位置
打包完成后,PakePlus 会弹出一个"打开输出目录"的按钮,或者在项目设置里能找到产物路径。典型位置:
- Windows:
%APPDATA%/PakePlus/output/<项目名>/ - macOS:
~/Library/Application Support/PakePlus/output/<项目名>/ - Linux:
~/.config/PakePlus/output/<项目名>/
可以在 PakePlus 设置里自定义输出目录——建议选一个你常用的位置(比如桌面或某个专门文件夹)。
跨平台本地打包
理论上 PakePlus 可以在本地出其他平台的包吗?官方文档没有明确支持跨平台本地编译(Tauri2 的交叉编译本身就是难点)。实际做法:
- Windows 上想出 macOS 包 → 不可能,macOS 编译只能在 macOS 上
- Windows 上想出 Linux 包 → 理论上可以用 Docker 模拟,但 PakePlus 没提供这个能力
- 最快的跨平台方案 → 直接用云端打包
本地打包的文件大小限制
云端打包走 GitHub 有文件大小限制(GitHub 仓库单文件 100MB,Release 单 Asset 2GB)。本地打包没有这个限制——你的 dist 目录有多大就能打包多大。
这是本地打包在处理大型静态文件项目(比如 Unity WebGL 构建,dist 几百 MB)时的一个明显优势。
什么时候本地打包最快
| 场景 | 推荐 | 原因 |
|---|---|---|
| 快速原型演示 | ✅ 本地 | 30 秒出包,给同事看效果最方便 |
| 公司内网 / 无法访问 GitHub | ✅ 本地 | 完全绕开外网依赖 |
| 只需要当前系统一个平台 | ✅ 本地 | 云端跨平台是多余操作 |
| 大型 dist 文件(Unity WebGL) | ✅ 本地 | 不受 GitHub 文件大小限制 |
| 没有 / 不想注册 GitHub | ✅ 本地 | 零门槛起步 |
| 需要多平台同时出包 | ❌ 本地 | 一次一个平台,累计耗时比云端还久 |
| 需要发布历史记录 | ❌ 本地 | 本地打包不自动记录发布历史 |
本地打包的环境异常处理
如果本地打包失败,最可能的原因是:
| 错误现象 | 可能原因 | 解决 |
|---|---|---|
| "缺少运行时" | 首次使用未下载完整缓存 | 检查网络,重试 |
| "WebView2 不可用" | Windows 未安装 WebView2 | 手动安装 WebView2 Runtime |
| "WebKitGTK 缺失" | Linux 未装 WebKitGTK | 执行 apt install libwebkit2gtk-4.0-dev |
| 打包后 APP 白屏 | dist 路径不对或 index.html 找不到 | 检查网站地址配置 |
| APP 启动即崩溃 | Tauri 配置里有错误 | 开开发调试、预览窗口里看 console |