Tauri 的跨平台打包体验非常统一:只要你的开发环境配置正确,同一套代码可以一键生成 Windows、macOS、Linux 的安装包。同时,借助 GitHub Actions 等 CI 服务,你可以实现推送代码即自动构建全平台产物,极大简化发布流程。
本地多平台打包
Tauri 的 CLI 工具 @tauri-apps/cli 提供了 tauri build 命令,它会自动检测当前操作系统,编译 Rust 内核,打包前端资源,并生成对应平台的安装包。基本流程如下:
- 确保环境准备
- Windows:需要安装 WebView2 运行时(Windows 10 1803+ 已内置),以及 Microsoft Visual C++ 构建工具。
- macOS:Xcode Command Line Tools 和系统自带 WKWebView。
- Linux:安装
libwebkit2gtk-4.1-dev、libayatana-appindicator3-dev等依赖(不同发行版略有差异)。
- 配置
tauri.conf.json
在 bundle 段中定义各平台打包参数,例如:
{
"bundle": {
"active": true,
"targets": "all",
"icon": ["icons/32x32.png", "icons/128x128.png"],
"windows": {
"wix": null,
"nsis": null
},
"macOS": {
"frameworks": []
}
}
}
你可以根据目标自行启用 MSI、NSIS(Windows)、DMG(macOS)或 AppImage / deb(Linux)。
- 运行打包命令
npm run tauri build
或者直接使用 npx tauri build。Tauri 会依次执行:
- 编译 Rust 后端(release 模式,自动优化体积);
- 构建前端(如果你配置了
beforeBuildCommand); - 生成平台特定的安装包到
src-tauri/target/release/bundle/目录。
跨平台局限性:在 macOS 上只能生成 macOS 包,同样 Windows 只能生成 Windows 包。若需在单台电脑上生成其他平台的包,可以借助交叉编译,但官方更推荐使用 CI 服务。
CI 云打包(GitHub Actions)
利用 GitHub Actions 的矩阵策略,你可以用一套工作流同时构建三个平台的安装包,并在每次推送标签(tag)时自动发布到 GitHub Release。以下是一个经过验证的实用配置示例:
name: Release
on:
push:
tags:
- 'v*'
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev
- name: Install frontend dependencies
run: npm ci
- name: Build Tauri app
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: ${{ github.ref_name }}
releaseName: 'App v__VERSION__'
releaseBody: 'See the assets to download this version.'
releaseDraft: true
prerelease: false
关键点解析:
- 矩阵策略:
os数组让工作流在三个系统上并行执行,每个系统只生成对应平台的包,无需交叉编译。 - 依赖安装:Linux 需要额外安装 WebKitGTK 开发包,其他平台通常已自备。
- tauri-apps/tauri-action:这是官方维护的 Action,它自动读取
tauri.conf.json中的配置,调用tauri build,并将生成的包上传到 Release。它会替换VERSION为实际版本号。 - 密钥:
GITHUB_TOKEN会自动拥有仓库的写权限,用于创建 Release 和上传资产。
实用技巧:
- 在推送标签前,可以先在本地测试完整构建流程,避免 CI 失败。
- 若不想每次推送都构建,可以限制触发分支或添加
workflow_dispatch手动触发。 - 可以在构建前添加 ESLint、测试、Rust
clippy检查等步骤,保证质量。 - 生成的安装包默认带版本号,配置清晰后,每次发版只需打一个
v1.0.0标签并推送,机器人就会自动交付三个平台的安装包。
通过本地 + CI 的组合,你可以在开发阶段快速迭代,在发布阶段全自动生成干净、专业的桌面应用安装包,彻底告别手动打包和上传的繁琐。