Files
xyzw_web_helper/打包方案/Vue项目打包成exe方案.md
2025-10-17 20:56:50 +08:00

8.1 KiB
Raw Permalink Blame History

🚀 Vue项目打包成exe方案对比

📋 方案总览

方案 难度 体积 优点 缺点 推荐度
Electron 大(~150MB 成熟稳定、功能完整 体积大
Tauri 小(~10MB 轻量、快速、安全 较新、生态小
静态服务器 中(~50MB 简单快速 需要浏览器

🏆 方案1Electron最推荐

优点

成熟稳定被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 - 绿色免安装版

🦀 方案2Tauri轻量级推荐

优点

体积超小(~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最全面

适合你的项目,因为:

  1. 项目需要WebSocket连接Electron支持完善
  2. 需要本地存储IndexedDB、localStorage完全支持
  3. 可能需要后续扩展(如本地文件读写、系统托盘)
  4. 用户体验最好(真正的桌面应用)

如果体积敏感Tauri

如果:

  • 用户对安装包大小敏感
  • 愿意投入时间学习Rust
  • 追求极致性能

如果快速上线:静态服务器

如果:

  • 需要快速验证
  • 不需要桌面特性
  • 用户可以接受浏览器界面

📊 实际对比

打包体积对比

静态服务器:  ~50MB
Tauri:       ~12MB
Electron:    ~180MB

启动速度对比

静态服务器:  ~1秒+浏览器启动)
Tauri:       ~0.5秒
Electron:    ~2秒

内存占用对比

静态服务器:  ~100MB+浏览器)
Tauri:       ~80MB
Electron:    ~150MB

🛠️ 具体实施建议

第一步:选择方案

我推荐Electron,原因:

  1. 你的项目功能复杂WebSocket、批量任务、本地存储
  2. Electron对这些功能支持最完善
  3. 体积大小对于桌面应用是可以接受的VSCode、Discord都是180MB+

第二步:我可以帮你实施

我可以帮你:

  1. 创建完整的Electron配置文件
  2. 修改项目结构以支持Electron
  3. 配置打包脚本
  4. 测试打包流程
  5. 生成最终的exe文件

第三步:分发给用户

打包完成后,用户只需:

  1. 下载exe文件
  2. 双击安装或直接运行(绿色版)
  3. 无需任何配置,直接使用

需要我帮你实施吗?

我可以立即帮你:

  1. 创建Electron配置文件
  2. 修改项目结构
  3. 添加打包脚本
  4. 配置图标和应用信息
  5. 生成可分发的exe文件

只需要告诉我你选择哪个方案,我马上开始!


推荐方案Electron
预计工作量30-60分钟
最终产物单个exe安装包用户双击即可使用