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

news2024/12/28 19:44:48

目    录

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

一、配置Electron

1.  安装electron

2. 在根目录创建electron 文件夹,并新建main.js 和preload.js

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

4. 安装concurrently 

5. 安装  nodemon 实现热更新

6. 本地启动

二、 打包和发布Electron

1. 修改electron/main.js 文件

2. 安装electron-builder

 3. 配置package.json

4. 打包


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

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

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

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

一、配置Electron

1.  安装electron

cnpm install --save-dev electron

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

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

 ps:在配置vite.config.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相关的API
      contextIsolation: 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

1. 修改electron/main.js 文件

添加

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

 

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": "测试文档项目"
    }  
  } 

4. 打包

cnpm run dist

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java同城达人交友系统源码

打造你的社交新领地!同城达人交友系统源码全揭秘 🌈 开篇:遇见同城,遇见更好的你 在这个快节奏的城市生活中,你是否渴望遇见志同道合的朋友?是否想与身边的达人分享生活的点滴?现在&#xff0…

深入探究Java中的宏替换:从基础到应用的全面解析

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

html+css 实现hover镂空背景按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

weblogic 连接gaussdb测试数据源是否联通

文章目录 1. gaussdb创建远程连接用户和数据库2. weblogic构建GaussDB源数据库3. 测试结果查询注意 weblogic中jar包已经放入lib目录中gaussdb已经创建可以连接登录的用户和数据库1. gaussdb创建远程连接用户和数据库 新建用户和数据库连接客户端Gauss=# create user lily pas…

【算法】装箱问题

一、引言 装箱问题算法、Bin-Packing算法是一种典型的优化问题,广泛应用于物流、资源分配、内存管理等领域。 二、算法原理 Bin-Packing问题可以描述为:给定一组大小不同的物品和一个容量有限的背包,如何将物品放入背包,使得背包内…

prompt提示词工程尝试

使用提示前 添加prompt后 提示词中的内容 # Rule: 数学大师## Profile - author: bennie - version: 1.0 - language: 中文 - description: 你是数学领域的专家,擅长进行数学领域内容的逐步分析和推导## Skills - 深入理解数据大小的比较 - ## Back…

ssm新闻发布系统-计算机毕业设计源码68754

摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对新闻发布等问题,对新闻发布进行研…

【竞技宝】奥运会:郑钦文夺冠破纪录

郑钦文在2024奥运会女子网球单打决赛中2比0击败了克罗地亚选手维基奇,为中国网球赢得了历史上首枚奥运会金牌,同时也成为了首位站上奥运会最高领奖台的亚洲运动员。其实郑钦文是顶着巨大压力参加奥运会的比赛,而且为此损失了很多钱&#xff0…

翻转二叉树 - 力扣(LeetCode)C语言

226. 翻转二叉树 - 力扣(LeetCode)(点击前面链接即可查看题目) 一、题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出…

springboot智能停车场管理系统-计算机毕业设计源码46885

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2 开发现状 1.3论文结构与章节安排 2 智能停车场管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用…

springboot集成websocket实现聊天室(极简版)

文章目录 前情描述websocket优势效果展示spring-boot后端html前端代码资源地址结语 前情描述 最近想了解websocket的相关原理,于是写了一个极简版的程序,后端使用springboot集成websocket模块,前端手敲了一个html页面(页面很丑很…

多屏显卡调试

本文依照2017年11月8日一般工作日志改写。 目录 一、显卡选用 二、安装过程 (1)操作系统: (2)开机安装驱动 (3)调整连接线缆 (4)显卡设置 这是一个LED大屏幕系统&…

秒懂C++之List

目录 前言 一.常用接口展示 二.模拟常用接口 1.1 准备阶段 1.2 push_back 尾插 1.3 insert 插入 1.4 头插 1.5 erase 删除 1.6 clear 清理 析构 1.7 拷贝构造 1.8 赋值拷贝 1.9 反向迭代器 1.10 ->运算符重载 三.全部代码 前言 List其实就是我们前面数据结构学…

AUTOSAR之AUTOSAR OS(上)

1、OSEK OS 1.1 OSEK OS介绍 AUTOSAR OS是基于 OSEK OS发展而来,向下兼容OSEK OS,所以了解AUTOSAR OS之前我们了解一下OSEK OS。 OSEK操作系统(OS)是一个为分布式嵌入式系统所定义的单核操作系统。为适应汽车电子可靠性、实时性、…

【视觉SLAM】 十四讲ch7习题

简介 本文主要内容是《视觉SLAM十四讲》(第二版)第7章的习题解答,并介绍了在解答习题中的一下思考和总结的经验。本文代码部分参考了:HW-of-SLAMBOOK2 1、除了本书介绍的ORB特征点,你还能找到哪些特征点?…

Java聚合快递对接云洋系统小程序源码

🚀【物流新纪元】聚合快递如何无缝对接云洋系统,效率飙升秘籍大公开!✨ 🔍 开篇揭秘:聚合快递的魅力所在 Hey小伙伴们,你是否还在为多家快递公司账号管理繁琐、订单处理效率低下而头疼?&#…

做不好PPT的原因

新手制作PPT长犯的10个错误 1.Word搬家 为了节约时间,直接把Word素材复制粘贴到PPT上,没有提炼 2.堆积图表 每个页面上堆积了大量的图表,却没有说明数据反映了什么趋势 3.图表业余 想用图表达自己的逻辑,但没有专业的模板&a…

【海洋生态环境】十大数据集合集,速看!

本文将为您介绍10个经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 MAI (Multi-scene Aerial Image) 发布方: 不列颠哥伦比亚大学德国航空航天中心慕尼黑大学 发布时间: 2021 简介: MAI 是用于在单个航拍图像中…

【原创】下载RealEstate10K数据集原始视频的方法

前言:目前互联网上能搜到下载RealEstate10K数据集原始视频的方法都已经不能用了,这篇博客介绍一种目前可用的下载RealEstate10K数据集原始视频的方法,并给出自动化的脚本代码。 目录 RealEstate10K简介 RealEstate10K标注文本下载 RealEst…

WhatsApp接不到验证码?快来看这个新功能,绑定邮箱

很多外贸朋友经常会因为WhatsApp接不到验证码来加我问这个解决方案,基本上我会的我都会帮一下忙。最近WhatsApp更新了一个非常实用的功能,绑定电子邮箱的功能,这个功能可以协助进行WhatsApp验证码的接收,下面来看下如何进行绑定吧…