人人都会AI编程

19.1 安装包体积构成分析

更新时间:2026-07-11

Tauri 生成的安装包之所以能压到几 MB,根本原因在于它只打包自己的代码,不捆绑浏览器引擎。下面我们拆解一下一个典型的 Tauri 安装包里到底装了什么,以及每一部分的体积占比。


Tauri 安装包的组成部分

1. Rust 编译的二进制文件(核心)

这是应用的后端逻辑,包含窗口管理、IPC 通信、权限控制以及你编写的所有 Rust 自定义命令。Rust 默认静态链接,最终生成一个独立的可执行文件。

  • 体积范围:对于中等复杂度的应用,通常 1.5 MB ~ 4 MB
  • 影响因素:引入的依赖库越多(如数据库驱动、加密库),二进制越大。但即使加上 serde、tokio 等常用 crate,也很难超过 6 MB。

2. 前端资源(HTML/CSS/JS)

这就是你写的 Web 界面,Tauri 在打包时会把这些文件一并放入安装包。

  • 体积范围:小到几十 KB(简单 UI),大到十几 MB(复杂后台面板)。
  • 注意:这部分体积完全由你控制。Tree-shaking、代码分割、资源压缩都会直接影响它的大小。

3. 资源文件(图标、字体、JSON 配置等)

应用图标、平台特定的 manifest 文件、内嵌字体或本地化文件等。

  • 体积范围:通常不超过几百 KB,除非你刻意嵌入了大量多媒体资源。

4. 最关键的一点:WebView 不打包

Tauri 依赖的系统 WebView(Windows 的 WebView2、macOS 的 WKWebView、Linux 的 WebKitGTK)已经作为操作系统的一部分存在,或者会由 Tauri 的安装器在运行时自动安装(Windows 上可以通过引导安装 WebView2 运行时,但这是系统级共享组件,不会塞进你的安装包)。因此,你不需要为一个完整的浏览器引擎买单。


直观对比:Tauri vs Electron

| 组成部分 | Tauri (典型值) | Electron (典型值) |
|----------|---------------|-------------------|
| 浏览器引擎 | 0 MB (系统提供) | Chromium (~70 MB) |
| 后端运行时 | Rust 二进制 (~2 MB) | Node.js (~20 MB) |
| 前端资源 | 前端静态文件 (~1 MB) | 前端静态文件 (~1 MB) |
| 其他框架开销 | 极小 | 几十 MB (框架打包层) |
| 总安装包大小 | ≈ 3-8 MB | ≈ 100-200 MB |

实际测试数据(同一款 Markdown 编辑器):

  • Tauri 打包前二进制 2.3 MB,前端资源 1.1 MB,合计 3.4 MB。
  • Electron 打包后 asar 包 89 MB。

不同平台的细微差异

  • Windows:如果你选择 .msi.exe 安装程序,安装器本身可能会额外增加几百 KB 的引导代码。若目标系统没有 WebView2,Tauri 的 NSIS 安装脚本可以自动下载 WebView2 引导程序(约 1.5 MB),但这仍然远小于捆绑 Chromium 的代价,且该运行时会被所有使用 WebView2 的程序共享。
  • macOS.dmg 镜像内的 .app 包体积直接就是你的二进制 + 前端资源,WKWebView 由系统强保证存在,零额外负担。
  • Linux:依赖 WebKitGTK,通常已预装于主流桌面发行版,安装包体积同样不加任何系统引擎。

对你意味着什么?

了解安装包体积构成后,你可以有针对性地做优化:

  • 想要更小的包?减少前端资源大小(压缩、懒加载)、精简 Rust 依赖。
  • 不想让用户安装 WebView2?打包前检测系统是否已有,否则引导安装(Tauri 已提供现成方案),总体积仍远低于 Electron。

一句话总结:Tauri 安装包体积之所以能降到几 MB,是因为它只装你和你的代码,操作系统负责提供浏览器引擎。这就是“原生 WebView 方案”带来的最实在的好处。