当前位置: 首页 > news >正文

将 Vue 3 + Vite + TS 项目打包为 .exe 文件

使用 electron-builder打包:

一、安装依赖

npm install electron electron-builder --save-dev

二、创建 Electron 入口文件:在项目根目录下创建 electron/main.js 文件

import { app, BrowserWindow } from 'electron';
import path from 'path';
import { fileURLToPath } from 'url';// 兼容 ESM 的 __dirname
const __dirname = path.dirname(fileURLToPath(import.meta.url));let win: BrowserWindow | null = null;function createWindow() {win = new BrowserWindow({width: 1920,height: 1080,webPreferences: {nodeIntegration: true,contextIsolation: false,},});// 开发环境下加载 Vite 开发服务器if (process.env.NODE_ENV === 'development') {win.loadURL('http://localhost:5173');win.webContents.openDevTools();} else {// 生产环境下加载打包后的文件win.loadFile(path.join(__dirname, '../dist/index.html'));}
}app.whenReady().then(createWindow);// 所有窗口关闭时退出应用(macOS 除外)
app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit();
});// macOS 下点击 Dock 图标重新打开窗口
app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindows();
});// 只在开发模式下启用热重载
if (process.env.NODE_ENV === 'development') {// 开发模式下的热重载逻辑require('electron-reload')(__dirname, {electron: path.join(__dirname, '..', 'node_modules', '.bin', 'electron'),});
}

三、修改 package.json:添加/修改以下配置:

{"main": "electron/main.js","scripts": {"electron:serve": "vite build && electron .","electron:build": "vite build && electron-builder --dir"},"build": {"productName": "test","files": ["dist/**/*","electron/**/*"],"win": {"target": "nsis"},"mac": {"target": "dmg"},"linux": {"target": "AppImage"}}
}

四、构建应用

npm run electron:build

可能会遇到的问题:

1、打包后出现白屏或者黑屏

http://www.lryc.cn/news/589002.html

相关文章:

  • SpringBoot 实现 Redis读写分离
  • 编译原理第一到三章(知识点学习/期末复习/笔试/面试)
  • 第三章 OB SQL 引擎高级技术
  • HR数字化转型:3大痛点解决方案与效率突破指南
  • B/S架构系统角色与对应协议详解
  • AAAI-2025 | 同济大学面向嘈杂环境的音频视觉导航!BeDAViN:大规模音频-视觉数据集与多声源架构研究
  • HCIA第三次综合实验:VLAN
  • iOS高级开发工程师面试——常见第三方框架架构设计
  • ESP32S3+VSCode+PlatformIO+Arduino+Freertos开发入门指南:基于Arduino框架的应用开发全流程
  • 基于LAMP环境的校园论坛项目
  • 新手向:Python数据处理Excel报表自动化生成与分析
  • 剑指offer62_骰子的点数
  • 为什么市场上电池供电的LoRa DTU比较少?
  • [Pytest][Part 5]单条测试和用例集测试
  • MMYSQL刷题
  • CAU数据挖掘 第五章 聚类问题
  • 【canal+mysql+example+数据验证测试】
  • Python 内置函数random
  • 行为模式-状态模式
  • 小智完整MCP交互流程(以调节音量为例)
  • 网络安全职业指南:探索网络安全领域的各种角色
  • 使用llama-factory进行qwen3模型微调
  • elasticsearch 下载/安装
  • MaxKB使用笔记【持续ing】
  • python+selenium UI自动化初探
  • JAVA高级第一章 集合框架和泛型(一)
  • Ubuntu18.04 系统重装记录
  • 写作词汇积累(A):自洽、自恰、恰如其分、恰当
  • MQ2烟雾传感器模块(第九天)
  • C++学习笔记五