electron vite vue打包

1. 安装所需依赖

  • electron
  • concurrently:阻塞运行多个命令,-k参数用来清除其它已经存在或者挂掉的进程
  • wait-on:等待资源,此处用来等待url可访问
  • cross-env: 该库让开发者只需要注重环境变量的设置,而无需担心平台设置
  • electron-builder: electron打包库
npm install electron --save-dev
npm install concurrently wait-on --save-dev
npm install cross-env electron-builder  --save-dev

2. 配置文件

  1. vite.config
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    import path from 'path'                                         // 新增// https://vitejs.dev/config/
    export default defineConfig({base: path.resolve(__dirname, './dist/'),    // 新增plugins: [vue()]
    })
    
  2. 新建electron文件夹
    1. main.js
      // 控制应用生命周期和创建原生浏览器窗口的模组
      const { app, BrowserWindow, Menu } = require('electron')
      const path = require('path')
      const NODE_ENV = process.env.NODE_ENVfunction createWindow() {// 隐藏菜单栏Menu.setApplicationMenu(null)// 创建浏览器窗口const mainWindow = new BrowserWindow({width: 1800,height: 900,webPreferences: {preload: path.join(__dirname, 'preload.js')}})// 加载 index.html// mainWindow.loadFile('dist/index.html') // 此处跟electron官网路径不同,需要注意mainWindow.loadURL(NODE_ENV === 'development'? 'http://localhost:8000': `file://${path.join(__dirname, '../dist/index.html')}`);// 打开开发工具// mainWindow.webContents.openDevTools()// 打开开发工具if (NODE_ENV === "development") {mainWindow.webContents.openDevTools()}
      }// 这段程序将会在 Electron 结束初始化
      // 和创建浏览器窗口的时候调用
      // 部分 API 在 ready 事件触发后才能使用。
      app.whenReady().then(() => {createWindow()app.on('activate', function () {// 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他// 打开的窗口,那么程序会重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
      })// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
      // 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
      app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()
      })
      
    2. preload.js
      // preload.js// 所有Node.js API都可以在预加载过程中使用。
      // 它拥有与Chrome扩展一样的沙盒。
      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": "laneui","version": "0.0.0","main": "electron/main.js","private": true,"homepage": "/","author": {"name": "tech","email": "mail@nodejs.cn"},"build": {"appId": "com.your-website.your-app","productName": "ElectronApp","copyright": "Copyright © 2021 <your-name>","win": {"target": ["nsis"]},"linux": {"target": ["rpm"]},"nsis": {"oneClick": false,"allowToChangeInstallationDirectory": true},"files": ["dist/**/*","electron/**/*"],"directories": {"buildResources": "assets","output": "dist_electron"}},"scripts": {"dev": "vite --mode development --port 8000","build": "vite build --mode production","preview": "vite preview","lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore","format": "prettier --write src/","electron": "wait-on tcp:8000 && cross-env NODE_ENV=development  electron .","electron:serve": "concurrently -k \"npm run dev\" \"npm run electron\"","electron:build": "vite build && electron-builder","electron:build:linux": "vite build && electron-builder -l --x64"},"dependencies": {"@microsoft/signalr": "^8.0.0","@vueuse/core": "^10.7.1","axios": "^1.6.5","pinia": "^2.1.7","rxjs": "^7.8.1","vue": "^3.3.11","vue-router": "^4.2.5"},"devDependencies": {"@arco-design/web-vue": "^2.54.1","@rushstack/eslint-patch": "^1.3.3","@vitejs/plugin-vue": "^4.5.2","@vue/eslint-config-prettier": "^8.0.0","concurrently": "^8.2.2","cross-env": "^7.0.3","electron": "^28.2.1","electron-builder": "^24.9.1","eslint": "^8.49.0","eslint-plugin-vue": "^9.17.0","mockjs": "^1.1.0","prettier": "^3.0.3","unplugin-auto-import": "^0.17.3","unplugin-vue-components": "^0.26.0","vite": "^5.0.10","wait-on": "^7.2.0"}
      }
      

3. 运行

热重载运行npm run electron:serve

windows打包 npm run electron:build

linux打包npm run yarn electron:build:linux

参考文章 https://github.com/hunter-ji/Blog/issues/54

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

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

相关文章

SpringBoot单元测试深入剖

SpringBoot作为一种流行的Java框架&#xff0c;其单元测试的重要性不言而喻。在这篇博客中&#xff0c;我们将深入剖析SpringBoot单元测试的底层原理。 单元测试的概念 单元测试是软件开发过程中的一个重要环节&#xff0c;它是对软件中的最小可测试单元进行检查和验证。对于…

开源项目ChatGPT-Next-Web的容器化部署(二)-- jenkins CI构建并推送镜像

一、背景 接着上文已制作好了Dockerfile&#xff0c;接下来就是docker build/tag/push等一系列操作了。 不过在这之前&#xff0c;你还必须在jenkins等CI工具中&#xff0c;拉取源码&#xff0c;然后build构建应用。 因为本文的重点不是讲述jenkins ci工具&#xff0c;所以只…

Java习题中 反转字符串 替换空格 翻转字符串里的单词 kmp算法

关于 反转字符串 空间问题&#xff1a;c的字符串可以原地修改&#xff0c;Java和python语言的字符串不可以&#xff0c;需要额外空间。这里用到的额外空间是没关系的&#xff0c;不影响原地修改的做法。 s[i] ^ s[j]; s[j] ^ s[i]; s[i] ^ s[j]; 这段代码是用来交换数组s中第…

亮数据——让你的IP走出去,让价值返回来

亮数据——让你的IP走出去&#xff0c;让价值返回来 前言跨境电商最最最大的痛点——让IP走出去超级代理服务器加速网络免费的代理管理软件亮数据解决痛点亮数据优势介绍亮数据浏览器的使用示例总结 前言 当前社会信息的价值是不可想象的&#xff0c;今天在亮数据中看到了个【…

Ipython与Jupyter之间的关系

IPython 和 Jupyter 之间的关系可以从它们的历史和目标中得到很好的解释。IPython&#xff08;Interactive Python&#xff09;最初是由 Fernando Prez 于 2001 年创建的&#xff0c;旨在提升 Python 的交互式计算体验。它提供了一个强大的交互式 Python shell 和一个面向高效计…

Linux C++ 007-指针

Linux C 007-指针 本节关键字&#xff1a;Linux、C、指针、函数指针 相关库函数&#xff1a; 基本概念 指针的作用&#xff1a;可以通过指针间接访问内存。内存编号是从0开始记录的&#xff0c;一般用于十六进制数字表示&#xff0c;可以利用指针变量保存地址。 定义和使用…

『VUE』03. 模板语法 使用js与插入html(详细图文注释)

目录 vscode终端中创建项目什么是模板语法?模板语法--js"变量"用法模板语法--插入html总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 vscode终端中创建项目 回顾一遍前面的cmd. 首先在vscode中打开一个新的空文件…

SpringAOP+自定义注解实现限制接口访问频率,利用滑动窗口思想Redis的ZSet(附带整个Demo)

目录 1.创建切面 2.创建自定义注解 3.自定义异常类 4.全局异常捕获 5.Controller层 demo的地址&#xff0c;自行获取《《—————————————————————————— Spring Boot整合Aop面向切面编程实现权限校验&#xff0c;SpringAop自定义注解自定义异常全局…

WordPress分页函数function

1、可以通过下面的代码在编辑器上添加一个分页符按钮。 2、将下面的代码添加到当前主题functions.php即可。 3、代码如下&#xff1a; function mce_page_break($mce_buttons) { $pos array_search(wp_more, $mce_buttons, true); if ($pos ! false) { $buttons …

全球最强开源AI大模型来了!Databricks称DBRX吊打Llama 2和GPT-3.5

美国AI初创公司Databricks公布&#xff0c;在语言理解、编程和数学方面&#xff0c;其将开源的模型DBRX的测试得分均高于GPT-3.5、Mixtral、Meta的Llama 2-70B、马斯克旗下xAI的Grok-1。作为混合专家模型&#xff0c;DBRX的输出token速度高Llama 2一筹。 全球最强大的开源人工智…

车载以太网AVB交换机 gptp透明时钟 5口 全千兆 SW1500

全千兆车载以太网交换机 一、产品简要分析 5端口千兆车载以太网交换机&#xff0c;包含4个通道的1000BASE-T1接口使用罗森博格H-MTD和泰科MATEnet双接口&#xff0c;1个通道1000BASE-T标准以太网(RJ45接口)&#xff0c;可以实现车载以太网多通道交换&#xff0c;千兆和百兆车载…

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

Docker搭建LNMP环境实战&#xff08;06&#xff09;&#xff1a;Docker及Docker-compose常用命令 此处列举了docker及docker-compose的常用命令&#xff0c;一方面可以做个了解&#xff0c;另一方面可以在需要的时候进行查阅。不一定要强行记忆&#xff0c;用多了就熟悉了。 1、…

Golang hash/crc32 库实战指南:从基础到优化

Golang hash/crc32 库实战指南&#xff1a;从基础到优化 引言理解CRC32hash/crc32库概览实战技巧数据校验性能优化多线程应用 错误处理与调试错误处理调试 实际案例分析结论 总结重点回顾 引言 在现代软件开发中&#xff0c;数据的完整性和安全性至关重要。无论是数据库存储、…

python的os模块的getcwd()、listdir()、splitext()、chdir()、rename()方法

getcwd() 获得当前路径 例子&#xff1a; import ospath os.getcwd()print(path) 结果&#xff1a; D:\pythonProject\test listdir(path) 返回列表&#xff0c;路径下所有文件和子文件夹 例子&#xff1a; import osfile_list os.listdir(rD:\TEST)print(file_list) s…

Vue-vue3

一、Vue3简介二、Vue3有那些优化性能的提升源码升级拥抱TypeScript新的特性 三、创建Vue3.0工程四、Vue3工程结构&#xff08;使用cli创建的vue3&#xff09;五、常用的Composition API&#xff08;组合式API&#xff09;setupsetup的两个注意点 ref函数reactive函数Vue3.0中的…

PCL 彩色点云RGB转灰度并显示

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 不同要素之间的灰度差异较为明显。点云灰度值与RGB属性的关系为:

=> ERROR [internal] load metadata for docker.io/library/java:8-alpine问题解决

[internal] load metadata for docker.io/library/java:8-alpine问题解决 这里上面说加载来自docker.io的数据出错&#xff0c;要注意&#xff1a;docker.io/library/java:8-alpine这个地址并不能访问&#xff0c;也ping不通&#xff0c;只是docker这里是这么写的而已。 分析 …

MySQL高阶SQL语句(二)

文章目录 MySQL高阶SQL语句&#xff08;二&#xff09;一、MySQL常用查询1、子查询1.1 语法1.1.1 结合select语句查询1.1.2 结合insert语句查询1.1.3 结合update语句查询1.1.4 结合delete语句查询1.1.5 在in前面添加not1.1.6 exists关键字 2、别名 二、MySQL视图1、视图介绍1.1…

《科学技术创新》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答&#xff1a; 问&#xff1a;《科学技术创新》期刊是哪个级别&#xff1f; 答&#xff1a;省级 主管单位&#xff1a;黑龙江省科学技术协会 主办单位&#xff1a;黑龙江省科普事业中心 问&#xff1a;《科学技术创新》期刊影响因子&#xff1f; 答&#xff1a;(2…

bugku-web-Flask_FileUpload

查看页面源码 这里提示给他一个文件&#xff0c;它将返回一个python运行结果给我&#xff0c;并且提示只能上传jpg和png文件 传递一个图片 查看源码 传递一个非图片 将源码写入新建的txt文件中 print(hello world) 将文件后缀改为jpg 上传 上传成功 查看源码 得到运行结果 我…