MMS · Modular Management System
mms-desktop · 桌面端开发基座(Tauri 2)
📘 在线文档 · mmsadmin.cn · Gitee · GitHub
将 任意 Vue 项目(Vite、vue-cli-service 等)产出的 dist/ 封装为 Windows / macOS / Linux 桌面应用(Tauri 2)。
重要:一次在某台系统上执行 npm run build,只会生成该系统的安装包(例如在 Mac 上不会出现 Windows .msi)。全平台需要 三系统分别构建 或使用 CI 多 Runner,见下文「打包流程」。
| 依赖 | macOS | Windows | Linux |
|---|---|---|---|
| Node.js | 18+(nodejs.org 或 nvm) | 同左 | 同左 |
| Rust(cargo) | rustup | 同左(官网下载 rustup-init.exe) |
通常同左(或发行版包管理器安装后仍建议 rustup) |
| C 编译与链接 | Xcode Command Line Tools | Visual Studio 2022 的 使用 C++ 的桌面开发 或 Build Tools(含 MSVC、Windows SDK) | build-essential、clang 等(随发行版) |
| WebView | 系统自带 WebKit | WebView2(运行时;新机多数已带,见 Prerequisites) | webkit2gtk 等(Debian/Ubuntu 见官方列表) |
| 其它 | — | 打包 NSIS/MSI 时由 Tauri 拉取/依赖本机工具链 | libayatana-appindicator、librsvg2 等(见官方) |
验证(三系统通用):
node -v
npm -v
cargo --version
rustc --version若 cargo 找不到,先完成 rustup 安装并新开终端,或执行 source "$HOME/.cargo/env"(Windows 用户安装 rustup 时会提示把 %USERPROFILE%\.cargo\bin 加入 PATH)。
xcode-select --install已装可跳过。用于 Clang、lipo 等与原生编译相关能力。
任选:官网安装包、Homebrew brew install node、nvm 等。版本 ≥ 18。
终端执行(交互安装;Modify PATH:yes;选项 1 默认工具链即可):
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh装完后 新开终端,或:
source "$HOME/.cargo/env"zsh 建议(任选,避免每次手动 source):在 ~/.zshrc 末尾追加:
[[ -f "$HOME/.cargo/env" ]] && . "$HOME/.cargo/env"打开 Tauri Prerequisites · macOS,按当前文档逐项确认。
cd /path/to/mms-desktop
npm install从 Node.js 官网 下载 LTS 安装包(≥ 18),安装时勾选 Add to PATH。
PowerShell 验证:
node -v
npm -v需 MSVC + Windows SDK(Tauri 2 官方要求),任选其一:
- 安装 Visual Studio 2022 Community,工作负载勾选 「使用 C++ 的桌面开发」,或
- 仅安装 Build Tools for Visual Studio 2022,勾选相同 C++ 桌面开发 组件。
详见 Tauri Prerequisites · Windows。
开发与最终用户运行均需 WebView2;多数 Win10/11 已带。若缺失,按 Prerequisites 安装 Evergreen Bootstrapper。
- 打开 https://rustup.rs/,下载 RUSTUP-INIT.EXE(64-bit)。
- 运行安装程序,按提示选择 default toolchain;确保将
%USERPROFILE%\.cargo\bin加入 PATH(安装程序可勾选)。 - 关闭并重新打开 PowerShell / CMD / 终端,执行:
cargo --version
rustc --versioncd C:\path\to\mms-desktop
npm install路径请按你本机仓库位置修改。
不同发行版包名略有差异,以 Tauri Prerequisites · Linux 当前页面为准。下面以 Debian / Ubuntu 家族为例。
sudo apt update
sudo apt install \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev若仓库里仍是 webkit2gtk-4.0-dev,请按官方文档选择 4.0 / 4.1 与发行版匹配的那一组。
建议用 NodeSource、nvm 或发行版仓库,保证 Node ≥ 18。
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env"
cargo --versioncd /path/to/mms-desktop
npm install打包出的 .deb / AppImage 通常在 带桌面环境的 Linux 上验证;纯 SSH 无显示器时 tauri dev 可能受显示/WebView 限制,以本机实测为准。
在 mms-desktop 根目录:
| 步骤 | 命令 |
|---|---|
| 安装 npm 依赖 | npm install |
| 无 Vue 产物时生成占位页 | npm run init(不覆盖已有 dist/index.html) |
| 用真实 Vue 构建结果 | 将 mms-ui/dist(或你的项目 dist)整目录拷入本目录 dist/ |
示例(路径按你本机修改):
rm -rf dist && cp -R ../mms-ui/dist ./dist前端 vite.config 建议 base: './'(或等价相对资源路径),否则桌面内嵌时易 404。
| 配置项 | 当前值 / 含义 |
|---|---|
productName |
安装包与窗口展示名,如 MMS Desktop。 |
version |
与安装包版本一致;建议与根目录 package.json → version 同步修改。 |
identifier |
应用唯一 id,如 com.sxpcwlkj.mms-desktop(反向域名),影响 macOS / Windows 标识。 |
build.beforeDevCommand |
开发前执行:用 sirv 在 dist 上起静态站(--port 1420,--single 便于 Vue history)。 |
build.devUrl |
开发时 WebView 打开的地址,须与 sirv 端口一致(现为 http://localhost:1420)。 |
build.beforeBuildCommand |
发布前钩子;现为 空,打正式包前请自行保证 dist/ 已是最终 Vue 产物。 |
build.frontendDist |
../dist(相对 src-tauri/):开发与打包时使用的前端静态资源根目录。 |
app.withGlobalTauri |
false:默认不把 API 挂到 window.__TAURI__,需时改 true 并查文档。 |
app.windows[] |
主窗口:label、title、宽高、minWidth/minHeight、center 等。 |
app.security.csp |
null;若上线要收紧 CSP 在此配置。 |
bundle.active |
true:生成安装包。 |
bundle.targets |
all:在当前构建机上启用该平台支持的全部打包格式(不是「一次打出 Win+Mac+Linux」)。 |
bundle.publisher / copyright |
发行者、版权信息,显示在安装信息里。 |
bundle.icon |
相对 src-tauri/ 的图标路径列表;勿随便删改,需整套用 npm run icons:tauri 从 icons/icon.png 生成。 |
完整键说明见 Tauri 配置参考。
| 脚本 | 行为 |
|---|---|
npm run init |
仅 init-dist:没有 dist/index.html 时写占位。 |
npm run dev |
predev:check-rust → init-dist → tauri dev。 |
npm run build |
prebuild:同上 → tauri build。 |
npm run icons:tauri |
用 icons/icon.png(须正方形)刷新 src-tauri/icons/。 |
npm run build:win / :mac / :linux |
目前均等同于 tauri build(只在当前系统上编当前平台)。 |
npm run dev- 检查
cargo是否在 PATH。 - 必要时补
dist/index.html。 - 启动
sirv(默认 1420)并打开桌面窗口加载http://localhost:1420。
端口被占用:改 tauri.conf.json 里 beforeDevCommand 的 --port 与 devUrl 保持一致。
首次拉起的 Rust 依赖编译 较慢,属正常。
原则:在 macOS / Windows / Linux 各自环境 各执行一次完整流程,才会得到对应安装包。
- 安装本节「一~四」中 对应系统 的全部依赖。
cd mms-desktop→npm install。- 准备好最终
dist/(npm run init占位 或 拷贝 Vuedist)。 - 执行:
npm run build- 在终端输出中确认 Finished 与 bundle 路径;在资源管理器 / Finder 中打开:
mms-desktop/src-tauri/target/release/bundle/
| 构建所用系统 | 常见目录 / 文件 |
|---|---|
| macOS | bundle/macos/ 下 .app;bundle/dmg/ 下 .dmg |
| Windows | bundle/msi/ 下 .msi;bundle/nsis/ 下安装器 .exe(视 Tauri/目标配置) |
| Linux | bundle/deb/ 下 .deb;bundle/appimage/ 下 .AppImage 等 |
若要全平台安装包:在 三台物理机/虚拟机 分别构建,或使用 CI(Windows / ubuntu / macOS 各一个 job)各执行上述步骤,收集各 job 的 bundle/ 产物。
交叉编译(单台机器编多平台):需额外配置,见 Tauri Distribute,本仓库未内置脚本。
- 安装包图标源:
icons/icon.png(须正方形,否则icons:tauri报错)。 - 生成到
src-tauri/icons/:
npm run icons:tauri详见 icons/README.md。
- 窗口与加载内容:由
tauri.conf.json+dist/决定。 - Vue Router:
hash与内嵌资源最省心;history在sirv --single开发态通常可用,生产包 deep link 若 404 可改 hash 或查CONFIG.md。
CONFIG.md:字段速查、能力capabilities、常见问题表。.skills/mms-desktop/SKILL.md:协作与排障口径。