8.1 KiB
8.1 KiB
🚀 Vue项目打包成exe方案对比
📋 方案总览
| 方案 | 难度 | 体积 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|---|
| Electron | ⭐⭐⭐ | 大(~150MB) | 成熟稳定、功能完整 | 体积大 | ⭐⭐⭐⭐⭐ |
| Tauri | ⭐⭐⭐⭐ | 小(~10MB) | 轻量、快速、安全 | 较新、生态小 | ⭐⭐⭐⭐ |
| 静态服务器 | ⭐⭐ | 中(~50MB) | 简单快速 | 需要浏览器 | ⭐⭐⭐ |
🏆 方案1:Electron(最推荐)
优点
✅ 成熟稳定,被VSCode、Discord等大型应用使用
✅ 完全独立运行,无需浏览器
✅ 可以访问本地文件系统和系统API
✅ 跨平台(Windows、Mac、Linux)
✅ 丰富的插件和工具支持
✅ 可以打包成单个exe安装包
缺点
❌ 打包后体积较大(~150-200MB)
❌ 内存占用相对较高
❌ 启动速度稍慢
适用场景
- ✅ 需要独立桌面应用
- ✅ 需要访问本地文件系统
- ✅ 用户不介意文件体积
- ✅ 需要系统托盘、快捷键等桌面特性
实施步骤
1. 安装依赖
# 安装Electron相关依赖
npm install --save-dev electron electron-builder
npm install --save-dev @electron/remote
2. 创建Electron主进程文件
创建 electron/main.js:
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow() {
const win = new BrowserWindow({
width: 1400,
height: 900,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
},
icon: path.join(__dirname, '../public/favicon.ico')
})
// 开发环境加载开发服务器,生产环境加载打包后的文件
if (process.env.NODE_ENV === 'development') {
win.loadURL('http://localhost:3001')
win.webContents.openDevTools()
} else {
win.loadFile(path.join(__dirname, '../dist/index.html'))
}
}
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
3. 修改 package.json
{
"name": "xyzw-game-helper",
"version": "3.13.5.6",
"main": "electron/main.js",
"scripts": {
"dev": "vite",
"build": "vite build",
"electron:dev": "electron .",
"electron:build": "vite build && electron-builder",
"electron:build:win": "vite build && electron-builder --win --x64"
},
"build": {
"appId": "com.xyzw.game-helper",
"productName": "XYZW游戏助手",
"directories": {
"output": "release"
},
"files": [
"dist/**/*",
"electron/**/*"
],
"win": {
"target": ["nsis", "portable"],
"icon": "public/favicon.ico"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true
}
}
}
4. 打包命令
# 开发测试
npm run electron:dev
# 打包为Windows exe
npm run electron:build:win
5. 输出文件
打包完成后,在 release 目录会生成:
XYZW游戏助手 Setup 3.13.5.6.exe- 安装包XYZW游戏助手 3.13.5.6.exe- 绿色免安装版
🦀 方案2:Tauri(轻量级推荐)
优点
✅ 体积超小(~10-15MB)
✅ 启动速度快
✅ 内存占用低
✅ 使用系统WebView,不打包浏览器
✅ Rust编写,更安全
✅ 跨平台
缺点
❌ 相对较新(2022年稳定)
❌ 生态系统较小
❌ 需要安装Rust环境
❌ 文档相对较少
适用场景
- ✅ 对文件体积敏感
- ✅ 需要高性能
- ✅ 愿意尝试新技术
实施步骤
1. 安装Rust和Tauri CLI
# 安装Rust(访问 https://rustup.rs/)
# Windows: 下载并运行 rustup-init.exe
# 安装Tauri CLI
npm install --save-dev @tauri-apps/cli
2. 初始化Tauri项目
npm run tauri init
3. 配置 tauri.conf.json
{
"build": {
"distDir": "../dist",
"devPath": "http://localhost:3001",
"beforeDevCommand": "npm run dev",
"beforeBuildCommand": "npm run build"
},
"package": {
"productName": "XYZW游戏助手",
"version": "3.13.5.6"
},
"tauri": {
"windows": [
{
"width": 1400,
"height": 900,
"title": "XYZW游戏助手"
}
]
}
}
4. 打包命令
# 开发测试
npm run tauri dev
# 打包
npm run tauri build
📦 方案3:静态服务器打包(最简单)
优点
✅ 实施最简单快速
✅ 体积适中(~50MB)
✅ 无需学习新框架
✅ 可以快速迭代
缺点
❌ 需要浏览器才能使用
❌ 无法访问系统API
❌ 用户体验略差(看到浏览器地址栏)
❌ 不是真正的桌面应用
适用场景
- ✅ 快速原型验证
- ✅ 不想学习Electron/Tauri
- ✅ 用户已安装浏览器
实施步骤
1. 创建启动脚本
创建 server.js:
const express = require('express')
const path = require('path')
const { exec } = require('child_process')
const app = express()
const PORT = 3001
// 静态文件服务
app.use(express.static(path.join(__dirname, 'dist')))
// 所有路由返回index.html(支持Vue Router)
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist', 'index.html'))
})
app.listen(PORT, () => {
console.log(`🚀 服务器运行在 http://localhost:${PORT}`)
// 自动打开浏览器
const url = `http://localhost:${PORT}`
const platform = process.platform
const command = platform === 'win32' ? 'start' :
platform === 'darwin' ? 'open' : 'xdg-open'
exec(`${command} ${url}`)
})
2. 安装依赖
npm install express
npm install --save-dev pkg
3. 修改 package.json
{
"scripts": {
"build": "vite build",
"package": "npm run build && pkg server.js -t node18-win-x64 -o release/XYZW游戏助手.exe"
},
"pkg": {
"assets": ["dist/**/*"]
}
}
4. 打包命令
npm run package
🎯 方案选择建议
推荐:Electron(最全面)
适合你的项目,因为:
- ✅ 项目需要WebSocket连接(Electron支持完善)
- ✅ 需要本地存储(IndexedDB、localStorage完全支持)
- ✅ 可能需要后续扩展(如本地文件读写、系统托盘)
- ✅ 用户体验最好(真正的桌面应用)
如果体积敏感:Tauri
如果:
- 用户对安装包大小敏感
- 愿意投入时间学习Rust
- 追求极致性能
如果快速上线:静态服务器
如果:
- 需要快速验证
- 不需要桌面特性
- 用户可以接受浏览器界面
📊 实际对比
打包体积对比
静态服务器: ~50MB
Tauri: ~12MB
Electron: ~180MB
启动速度对比
静态服务器: ~1秒(+浏览器启动)
Tauri: ~0.5秒
Electron: ~2秒
内存占用对比
静态服务器: ~100MB(+浏览器)
Tauri: ~80MB
Electron: ~150MB
🛠️ 具体实施建议
第一步:选择方案
我推荐Electron,原因:
- 你的项目功能复杂(WebSocket、批量任务、本地存储)
- Electron对这些功能支持最完善
- 体积大小对于桌面应用是可以接受的(VSCode、Discord都是180MB+)
第二步:我可以帮你实施
我可以帮你:
- 创建完整的Electron配置文件
- 修改项目结构以支持Electron
- 配置打包脚本
- 测试打包流程
- 生成最终的exe文件
第三步:分发给用户
打包完成后,用户只需:
- 下载exe文件
- 双击安装或直接运行(绿色版)
- 无需任何配置,直接使用
❓ 需要我帮你实施吗?
我可以立即帮你:
- ✅ 创建Electron配置文件
- ✅ 修改项目结构
- ✅ 添加打包脚本
- ✅ 配置图标和应用信息
- ✅ 生成可分发的exe文件
只需要告诉我你选择哪个方案,我马上开始!
推荐方案:Electron
预计工作量:30-60分钟
最终产物:单个exe安装包,用户双击即可使用