完整版 [vue 配置electron]

news2024/11/15 23:45:42

 vue 配置electron,使用make 进行打包

1. 安装依赖 yarn install

2. 在根目录新建文件夹 electron

3. package.json 文件里添加

"name": "my-electron-app",
  "version": "1.0.0",
  "description": "Hello World!",
  "main": "main.js",
  "author": "Jane Doe",
  "license": "MIT",

4. 安装electron    npm install --save-dev electron 

npm install --save-dev electron 

cnpm install --save-dev electron 

5. 在package.json 配置文件中的 添加:

{
  "scripts": {
    "start": "electron ."
  }
}

6.   在electron文件夹中创建三个文件(index.html、main.js、preload.js)

创建index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using Node.js <span id="node-version"></span>,
    Chromium <span id="chrome-version"></span>,
    and Electron <span id="electron-version"></span>.
  </body>
</html>

创建main.js

const { app, BrowserWindow } = require('electron')
const path = require('node:path')
const createWindow = () => {
    const win = new BrowserWindow({
      width: 800,
      height: 600,
    //   将此脚本(preload)附加到渲染器流程
      webPreferences: {
        preload: path.join(__dirname, 'preload.js')
      }
    })
  
    win.loadURL('http://localhost:3000')
    // win.loadFile('./electron/index.html')
    // 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])
  }
})

7. 安装 concurrently

npm  install concurrently

cnpm  install concurrently

安装好配置package.json

"start": "concurrently vite \"electron .\""

8. 安装 nodemon实现热更新

npm i nodemon -D

cnpm i nodemon -D

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

9. npm start 运行,测试是否成功

10. 打包

npm install --save-dev @electron-forge/cli
cnpm install --save-dev @electron-forge/cli

npm i electron-squirrel-startup 
cnpm install electron-squirrel-startup --save

npx electron-forge import

安装成功可以在package.json 中看到下面这些

"scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
....
 "devDependencies": {
    "@electron-forge/cli": "^7.4.0",
    "@electron-forge/maker-deb": "^7.4.0",
    "@electron-forge/maker-rpm": "^7.4.0",
    "@electron-forge/maker-squirrel": "^7.4.0",
    "@electron-forge/maker-zip": "^7.4.0",
    "@electron-forge/plugin-auto-unpack-natives": "^7.4.0",
    "@electron-forge/plugin-fuses": "^7.4.0",
    "@electron/fuses": "^1.8.0",
  }

 如果devDependencies里面的这些没有,那咱可以复制手写进去,然后 npm i 就好。

开始分发 

cnpm run package

cnpm run make

npm run make 报错

解决方法:
原因是没有配置 forge.config.js ,在根目录新增forge.config.js【这个文件按理说是自动生成的,但是我没有,不晓得为啥】

const { FusesPlugin } = require('@electron-forge/plugin-fuses')
const { FuseV1Options, FuseVersion } = require('@electron/fuses')

module.exports = {
 packagerConfig: {
   asar: true,
 },
 rebuildConfig: {},
 makers: [
  {
   name: '@electron-forge/maker-squirrel',
   config: {
    certificateFile: './cert.pfx',
    certificatePassword: process.env.CERTIFICATE_PASSWORD
   },
  },
  {
   name: '@electron-forge/maker-zip',
   platforms: ['darwin'],
  },
  {
   name: '@electron-forge/maker-deb',
   config: {},
  },
  {
   name: '@electron-forge/maker-rpm',
   config: {},
  },
 ],
 plugins: [
  {
   name: '@electron-forge/plugin-auto-unpack-natives',
   config: {},
  },
  // Fuses are used to enable/disable various Electron functionality
  // at package time, before code signing the application
  new FusesPlugin({
   version: FuseVersion.V1,
   [FuseV1Options.RunAsNode]: false,
   [FuseV1Options.EnableCookieEncryption]: true,
   [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
   [FuseV1Options.EnableNodeCliInspectArguments]: false,
   [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
   [FuseV1Options.OnlyLoadAppFromAsar]: true,
  }),
 ],
}

然后再运行 

可先运行 npm run package,

再运行 npm run make,

运行成功会自动生成一个out 文件包,打开exe文件即可。

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

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

相关文章

c++三大特性 封装、继承、多态 (一)

c中的继承 一. 封装封装的定义 二.继承的概念及定义2.1继承的概念2.2继承的定义2.2.1 定义格式2.2.2 继承关系和访问限定符2.2.3 继承基类成员访问方式的变化 三.基类和派生类对象赋值转换四.继承中的类作用域 一. 封装 封装的定义 数据和方法放到一起&#xff0c;把像访问定义…

【Canvas与艺术】八个等腰三角形拼成的八角楼

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>八个等腰三角形拼成的八角楼</title><style type"text…

【C语言】编译和链接(细节的king)

文章目录 前言1. 翻译环境和运行环境1.1 翻译环境1.1.1 预处理&#xff08;预编译&#xff09;1.1.2 编译词法分析语法分析语义分析及优化 1.1.3 汇编1.1.4 链接 1.2 运行环境 前言 相信大家在学完C语言的全部基础知识&#xff0c;肯定会经常动手敲代码。以VS为例&#xff0c;…

【C++】—— 类与对象(三)

【C】—— 类与对象&#xff08;三&#xff09; 4、拷贝构造函数4.1、初识拷贝构造4.1.1、为什么要传引用4.1.2、引用尽量加上 const 4.2、深入拷贝构造4.2.1、为什么要自己实现拷贝构造4.2.2、传值返回先调用拷贝构造的原因4.2.3、躺赢的 MyQueue4.2.4、传值返回与引用返回 4.…

云HIS,云HIS源码

医学领域的信息系统平台种类繁多。在很大程度上&#xff0c;对于一些在医疗机构的区域一体化信息平台&#xff0c;在微观层面上&#xff0c;传统的医疗信息系统已经建立了许多医院(HIS)或数字医院系统&#xff0c;包括子系统提供了一个单一的功能&#xff0c;如注册和形象&…

【H3C(HCL)网络模拟器网络桥接】进入网络设备Web页面

H3C模拟器网络桥接 1.模拟器选择Host&#xff0c;添加 2.选中Host主机的网卡&#xff0c;这里我选的是华三的Virtual Box的网卡 选中后连线至防火墙对应接口&#xff0c;建议连接到G1/0/1&#xff0c;这个接口是默认配置的接口&#xff0c;拥有默认地址 3.修改防火墙配置 [F…

Windows 中 PIN 和密码的区别是什么?各有各的优点

PIN PIN 即个人识别号码&#xff08;Personal Identification Number&#xff09;&#xff0c;在 Windows 系统中通常由 4 到 6 位数字组成。它是 Windows Hello 的一部分&#xff0c;设计用于提供快速、安全的身份验证。 密码 密码是一种更为传统的身份验证方法&#xff0c;…

提升生产效率:APS高级计划排程系统在车间工序级排程的革命性应用

在制造业的数字化转型浪潮中&#xff0c;APS高级计划排程系统以凭借自身卓越的排程运算能力和应用灵活性&#xff0c;已经成为中大型制造业提升生产效率的关键工具。APS系统的介入&#xff0c;打通了传统ERP和MES等各类业务系统运营平台&#xff0c;并且通过产能均衡规划&#…

聚观早报 | 搜狐2024年Q2财报;一加Open推出深红色版本

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 8月6日消息 搜狐2024年Q2财报 一加Open推出深红色版本 smart精灵#5将在澳洲首秀 OpenAI为ChatGPT测试文本水印 …

手动部署内网穿透

关于内网穿透&#xff0c;主要针对什么是公网和内网&#xff1f;NAT转化技术等引出内网穿透方法。 本文主要技术是利用frp部署内网穿透、以及nagix部署web服务。 测试环境&#xff1a; 服务器&#xff1a;Linux云服务内网&#xff1a;用本地WM充当内网云服务器Linux&#xf…

伯克利Linux系统管理: 脚本编写学习 课堂与实验(系统简洁保姆级学习)

Linux系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 第二章(上) Vim课堂与实验 文章目录 Linux系列文章目录一、前言二、学习内容&#xff1a;2.1 上课内容2.1.1 为什么要学习脚本编写&#xff1f;2.1.2 Bash编程语言2.1.3 SheBang2.…

半导体PEEK纳米级钻孔,用德国高精密主轴

在半导体行业&#xff0c;对精度、效率与稳定性的要求近乎苛刻。其中&#xff0c;PEEK&#xff08;聚醚醚酮&#xff09;材料因其优异的耐热性、耐化学性和机械性能&#xff0c;在高端半导体封装、微流控芯片等领域得到了广泛应用。然而&#xff0c;PEEK材料的硬度与韧性并存&a…

Armv8/Armv9的Pstate寄存器介绍

PSTATE概述 在Armv7及其之前&#xff0c;有一个重要的寄存器叫做程序状态寄存器CPSR&#xff0c;但是到了Armv8/Armv9的aarch64架构时&#xff0c;删除了CPSR寄存器&#xff0c;改为了PSTATE&#xff08;PE状态寄存器&#xff09;。 PSTATE表示一组小寄存器的集合&#xff0c;…

隐私指纹浏览器产品系列 — 什么是指纹(一)

1.引言 现在许多网站在努力的尝试标记互联网上的每一个访客&#xff0c;用以追踪用户的行为轨迹&#xff0c;分析行为习惯&#xff0c;以及确认是否为真实用户。除此之外&#xff0c;他们还利用这些标记&#xff0c;将多个可能是同一个用户身份的访客进行归一&#xff0c;关联…

中国高尔夫运动快速发展中,深圳高尔夫展邀您迎接机遇与挑战

在浩瀚的体育世界中&#xff0c;高尔夫以其悠久的历史、优雅的姿态和独特的魅力闻名于世&#xff0c;被誉为“古老的贵族运动”&#xff0c;而这个美誉却让很多人对它敬而远之。其实高尔夫被称作“贵族运动”&#xff0c;仅仅是因为早期它更多在贵族之间流行而已。 高尔夫&…

【TS】基本类型

基本类型 类型例子描述number1, -33, 2.5任意数字stringhi, "hi", hi任意字符串booleantrue、false布尔值true或false字面量其本身限制变量的值就是该字面量的值any*任意类型unknown*类型安全的anyvoid空值&#xff08;undefined&#xff09;没有值&#xff08;或und…

鸿蒙HarmonyOS开发:如何使用第三方库,加速应用开发

文章目录 一、如何安装 ohpm-cli二、如何安装三方库1、在 oh-package.json5 文件中声明三方库&#xff0c;以 ohos/crypto-js 为例&#xff1a;2、安装指定名称 pacakge_name 的三方库&#xff0c;执行以下命令&#xff0c;将自动在当前目录下的 oh-package.json5 文件中自动添…

面对电商渠道品牌要如何控价

在当今竞争激烈的市场环境中&#xff0c;品牌销售渠道的管理至关重要。线上和线下渠道的低价、窜货问题犹如侵蚀品牌根基的蚁穴&#xff0c;若不加以有效治理&#xff0c;品牌价值将受到严重损害。 线上渠道方面&#xff0c;除了利用系统精准监测低价情况外&#xff0c;还应注重…

手撕数据结构之二叉树

1.树 树的基本概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 • 有⼀个特殊的结点&…

python语言day2

字符串&#xff1a; 字符串的方法 字符串格式化&#xff1a; 输出结果&#xff1a; 姓名张三今年123岁&#xff0c;现在在北京工作,名字叫张三 text "姓名{0}今年{1}岁&#xff0c;现在在{2}工作,名字叫{0}".format("张三",123,"北京") print(t…