vue配置electron,使用electron-builder进行打包【完整步骤】

ops/2024/10/10 18:58:26/

目    录

1. 已知:vue3项目已经创建好

一、配置Electron

electron-toc" style="margin-left:40px;">1.  安装electron

electron%20%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%B9%B6%E6%96%B0%E5%BB%BAmain.js%20%E5%92%8Cpreload.js-toc" style="margin-left:40px;">2. 在根目录创建electron 文件夹,并新建main.js 和preload.js

3.在package.json 中配置添加以下代码:

4. 安装concurrently 

5. 安装  nodemon 实现热更新

6. 本地启动

二、 打包和发布Electron

electron%2Fmain.js%20%E6%96%87%E4%BB%B6-toc" style="margin-left:40px;">1. 修改electron/main.js 文件

electron-builder-toc" style="margin-left:40px;">2. 安装electron-builder

 3. 配置package.json

4. 打包


1. 已知:vue3项目已经创建好

1.1  安装依赖(npm i) ;运行项目(npm run dev),确保项目是好的。

1.2.  打包本地Vue项目(npm run build)

打包好后会自动形成dist 文件夹

一、配置Electron

electron">1.  安装electron

cnpm install --save-dev electron

安装好后,package.json 中会加载electron 及其版本号

配置 ​​​​​vite.config.js文件

 ps:在配置vite.config.js文件之后可以进行打包本地项目。

electron%20%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%B9%B6%E6%96%B0%E5%BB%BAmain.js%20%E5%92%8Cpreload.js">2. 在根目录创建electron 文件夹,并新建main.js 和preload.js

main.js :

const { app, BrowserWindow } = require('electron')
const path = require('path')const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,//   将此脚本(preload)附加到渲染器流程webPreferences: {preload: path.join(__dirname, 'preload.js'),nodeIntegration: true, //开启true这一步很重要,目的是为了vue文件中可以引入node和electron相关的APIcontextIsolation: true, // 可以使用require方法enableRemoteModule: true, // 可以使用remote方法}})//也开页面win.loadURL('http://localhost:3001')//控制台win.webContents.openDevTools()}app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})})app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()})

preload.js 

window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const dependency of ['chrome', 'node', 'electron']) {replaceText(`${dependency}-version`, process.versions[dependency])}})

3.在package.json 中配置添加以下代码:

{"name": "vue3_cli_default","version": "1.0.0","description": "Hello World!","main": "electron/main.js",   //main.js修改为electron/main.js"author": "Jane Doe","license": "MIT","scripts": {"dev": "vite","build": "vite build","serve": "vite preview","start": "electron ."},
.......
}

4. 安装concurrently 

cnpm  install concurrently

concurrently:可以同时执行多个命令

用于此项目中的作用:将启动vite和electron整合成一条命令,一键启动

安装好配置package.json

"dev": "concurrently vite \"electron .\""

5. 安装  nodemon 实现热更新

cnpm i nodemon -D

"dev": "concurrently vite \"nodemon --exec electron . --watch ./ --ext .js,.html,.css,.vue\""

6. 本地启动

cnpm run dev

注意事项electron 中的main.js 启动地址 要与本地启动的地址保持一致,否则打开是空白页。

二、 打包和发布Electron

electron%2Fmain.js%20%E6%96%87%E4%BB%B6">1. 修改electron/main.js 文件

添加

const NODE_ENV = process.env.NODE_ENVwin.loadURL(NODE_ENV === 'development'? 'http://localhost:3000':`file://${path.join(__dirname, '../dist/index.html')}`); 
if (NODE_ENV === "development") {win.webContents.openDevTools()}

 

electron-builder">2. 安装electron-builder

cnpm i electron-builder -D

 3. 配置package.json

  "scripts": {"pack": "electron-builder --dir","dist": "electron-builder"},"build": {  "appId": "luOne","productName": "sd","files": [  "dist/**/*","electron/**/*"],"directories": {  "buildResources": "assets",  "output": "electron-dist"},  "win": {  "target": ["nsis"],  "icon": "build/icon.ico"  }, "mac": {"category": "public.app-category.utilities"}, "nsis": {  "oneClick": false,"allowElevation": true, "deleteAppDataOnUninstall": true,"allowToChangeInstallationDirectory": true, "createDesktopShortcut": true,"createStartMenuShortcut": true,"shortcutName": "测试文档项目"}  } 

添加备注:

build: {"nsis": {"oneClick": false, // 是否一键安装"perMachine": false,//perMachine 可能会影响自动更新的安装权限问题(windows7不受影响)"allowElevation": true,// 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。"allowToChangeInstallationDirectory": true,// 允许修改安装目录"installerIcon": "./build/icons/icon.ico",// 安装图标"uninstallerIcon": "./build/icons/icon.ico",//卸载图标"installerHeaderIcon": "./build/icons/icon.ico",// 安装时头部图标"createDesktopShortcut": true, // 创建桌面图标"createStartMenuShortcut": true,// 创建开始菜单图标"runAfterFinish": true,// 安装完成后是否运行项目"shortcutName": "client-ico",// 图标名称"include": "build/script/installer.nsh" // 自定义nsis脚本},}

4. 打包

cnpm run dist

打包成功会自动生成 electron-dist 文件夹,其中会有一个exe 文件,直接运行exe文件即可。


http://www.ppmy.cn/ops/92012.html

相关文章

C++ 类和对象(上)

文章目录 类的定义及访问限定符类域类的实例化对象的大小this指针 类的定义及访问限定符 类的格式: class为类的关键字,class 类的名字(自定义) {} ;类中可以定义成员变量也可以定义成员函数,在类中定义…

阿里云万网推出首个域名AI大模型智能体应用,上线“.ai”等40个全新域名后缀

中国域名保有量3160万,以9.4%的份额位居全球第二。 域名资源越来越紧张,运维越来越复杂,面对的网络攻击也越来越频繁,都给这一领域提出了更大挑战。 8月8日,在阿里云万网焕新发布会上,阿里云宣布域名产品服…

数据库连接池的深入学习

为什么需要数据库连接池? 正常操作数据库需要对其进行连接,访问数据库,执行sql语句,断开连接。 创建数据库连接是一个昂贵的过程,在高并发的情况下,频繁的创建数据库的连接可能会导致数据库宕机。 有了连…

DevOps 相关知识点总结

1. 请简要解释 DevOps 的概念和核心原则。 - DevOps 是一种将软件开发(Dev)和 IT 运维(Ops)相结合的理念和方法,旨在缩短开发周期、提高软件交付质量和效率,促进开发、运维和其他相关部门之间的沟通、协作…

多尺度病理图像纹理特征作为肺腺癌预后预测的新指标|文献精读·24-08-09

小罗碎碎念 这一期推文分享的文献是2022年发表于 Journal of Translational Medicine 的一篇文章,目前IF6.1。 这篇文章值得刚入门病理AI领域的老师/同学仔细研读,因为思路清晰,该讲到的流程基本都涉及了,详细讲述了病理图像的各种…

架构师软考-每日两道单选题8

第15题 单选题 在数字孪生生态系统中,( )包括描述、诊断、预测、决策四个方面。 A 数据互动层 B 模型构建层 C 仿真分析层 D 共性应用层 解析 共性应用层包括描述、诊断、预测、决策四个方面。在数字孪生生态系统中,共性应用层…

ansible ---- ansible.builtin.command

一、详解 command模块是ansible-core核心模块的一部分&#xff0c;大多数情况下可以使用简化名command&#xff1b;该命令会被执行在所有选择的机器上。 注意事项 1、该命令并不会通过shell执行&#xff0c;所以对于环境变量$HOSTNAME以及一些" *", “<”, “&g…

CnosDB 元数据集群 – 分布式时序数据库的大脑

CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。 1. 概述 CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。元数据包括数据库…