最基础的electron打包运行配置,以及Electron Builder 和 Electron Forge两者差异

news2025/6/17 14:40:22

node版本 v16.19.0

  • 开发之前请务必去官网查看node所支持的版本,不然安装会报错

推荐使用 yarn 包管理

引入electron依赖

yarn add electron@22.3.6 -D
yarn add electron-builder -D

创建electron配置文件

  • 我这边为了模块化开发,将electron相关文件放在了根目录的 electron 文件中;
    在这里插入图片描述

electron/main.js 文件内容

// electron 模块可以用来控制应用的生命周期和创建原生浏览窗口
const { app, BrowserWindow } = require('electron')

const createWindow = () => {
 // 创建浏览窗口
 const mainWindow = new BrowserWindow({
   width: 800,
   height: 600,
   webPreferences: {}
 })

 // mainWindow.loadFile("index.html"); // 加载文件
 mainWindow.loadURL("http://127.0.0.1:5173/"); // 加载路径

 // 打开开发工具
 mainWindow.webContents.openDevTools()
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
 createWindow()

 app.on('activate', () => {
   // 在 macOS 系统内, 如果没有已开启的应用窗口
   // 点击托盘图标时通常会重新创建一个新窗口
   if (BrowserWindow.getAllWindows().length === 0) createWindow()
 })
})

// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此, 通常
// 对应用程序和它们的菜单栏来说应该时刻保持激活状态, 
// 直到用户使用 Cmd + Q 明确退出
app.on('window-all-closed', () => {
 if (process.platform !== 'darwin') app.quit()
})

修改 package.json 配置

  • 删除 "type": "module" 方便在开发中直接使用 required & import 引入模块;
  • 引入electron配置文件 "main": "./electron/main.js";
  • 添加electron启动命令(在 scripts 属性中添加) "electron:start": "electron ." ;
  • 添加electron打包命令(在 scripts 属性中添加) "electron:build": "electron-builder" ;
    • 添加打包配置
"build": {
  "productName": "桌面笔记",
  "directories": {
    "output": "electron_dist"
  },
  "win": {
    "icon": "./src/assets/ironMan.icon"
  }
}
至此最简单electron应用(开发调试、打包)就完成了

当然也可以使用 electron-forge[https://www.electronforge.io/]进行配合

  • 这个方法的配置更加简单
  • 可以根据官网给出的操作快速配置
  • 两者的差异可以参考这里

Electron Builder 和 Electron Forge 都是用于构建 Electron 应用程序的工具,它们有以下区别:

配置方式不同

  1. Electron Builder 使用 package.json 文件中的配置,而 Electron Forge 使用 forge.config.js 文件中的配置。这使得 Electron Builder 更加轻量级,而 Electron Forge 更加灵活。

  2. 集成的插件不同
    Electron Builder 集成了许多插件,如自动更新、发布、代码签名等,而 Electron Forge 的插件系统则更加灵活,你可以选择需要的插件来实现相应的功能。

  3. 生成的应用程序不同
    Electron Builder 生成的应用程序包含可执行文件和所有的依赖项,而 Electron Forge 生成的应用程序包含一个 JavaScript 文件和一个 node_modules 目录。这使得 Electron Forge 更加适合将应用程序部署到云端,而 Electron Builder 更适合本地部署。

  4. 开发体验不同
    使用 Electron Builder 开发时,你需要手动重新构建应用程序来查看更改,而 Electron Forge 具有自动重新构建和重新加载的功能,可以提高开发效率。

总的来说,Electron Builder 更加适合简单的应用程序,而 Electron Forge 更适合复杂的应用程序,需要更多的自定义和灵活性。

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

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

相关文章

Chapter3: Design Creation with RTL(ug949)

(3.5)Clock Domain Crossing 设计中的跨时钟域电路直接影响设计的可靠性。您可以设计自己的电路,但Vivado design Suite必须识别电路,并且必须正确应用ASYNC_REG属性。Xilinx提供XPM以确保正确的电路设计,包括…

【c/c++编译工具】——Cmake的学习

简介 目录 简介 1. Cmake的基本语法 2. 常用指令 3. CMake常用的变量 4. CMake编译工程 5. 构建方式 6. 实战---CMake代码实战 CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake可以说已经成为大部分C开源项目标配…

将自己的服务注册成Windows服务

winsw下载地址 https://github.com/winsw/winsw/releases 如何注册服务 将WinSW.exe复制到自定义的目录同目录下创建projectName.xml。特别注意&#xff0c;xml和exe必须同名配置 xml文件 xml配置信息如下 <service><id>wjb-member</id><name>wjb-me…

15-721 Chapter7 索引

锁的分类 锁占用少量内存&#xff0c;实际上在不竞争的情况下性能不错. 第一个就是靠test_and_set实现的自旋锁&#xff0c;高效&#xff0c;因为在用户态&#xff0c;但是却不可扩展&#xff0c;对cache&#xff0c;os都不友好 第二个是mutex&#xff0c;实际上两个部分组成…

浮空,定位

浮动原理&#xff1a; 清除浮动 高度塌陷是怎么造成的&#xff0c;浮动元素脱离当前文档流&#xff0c;然后无法撑起父容器导致了高度塌陷&#xff0c;因为父容器没有设置高度 解决方法&#xff1a; 1.将父元素变成bfc元素 2.父元素浮动 3.清除浮动&#xff1a; 通过给父元…

小伙被内卷逼成扫地僧,把牛客网所有面试题整理成25W字面试手册

很多工作过了 5 年之后的工程师&#xff0c;都表示写不动 CRUD 代码了&#xff0c;都会考虑转架构师&#xff0c;但是一想到面试&#xff0c;可能心里就会一紧。 一般面试大厂架构师的岗位至少需要 3 轮技术面试&#xff0c;我咨询了一下阿里的大佬&#xff0c;了解到每一轮的…

数字化时代,如何建造会“运转”的数仓

在建设数仓之前需要根据数据基础和业务需求来决定要建设什么标准的数仓。 常见数仓问题 1、公共底层加工逻辑分散&#xff1a;对于来自多个数据源&#xff0c;但需要使用相同过滤和解析方式公共底层数仓&#xff0c;其过滤和解析代码在每个任务或配置中直接静态复制&#xff…

【系统集成项目管理工程师】项目范围管理

&#x1f4a5;十大知识领域&#xff1a;项目范围管理 项目范围管理包括以下 6 个过程: 编制范围管理计划过程收集需求过程定义范围过程创建工作分解结构过程确认范围过程范围控制过程 一、编制范围管理计划过程 对如何定义、确认和控制项目范围的过程进行描述 1、输出&#xff…

ch02-PyTorch数据预处理

ch02-PyTorch数据预处理0.引言1.数据读取机制 Dataloader 与 Dataset1.1.纸币二分类1.2.DataSet与DataLoader1.2.1.torch.utils.data.DataLoader&#xff1a;构建可迭代的数据装载器1.2.2.torch.utils.data.Dataset&#xff1a;Dataset抽象类1.2.3.以人民币分类为例2.数据预处理…

【Python】如何正确执行python装饰器?

文章目录前言一、错误的做法是什么&#xff1f;二、正确的方法总结前言 说到Python装饰器的执行顺序&#xff0c;有很多半吊子张口就来&#xff1a; 靠近函数名的装饰器先执行&#xff0c;远离函数名的装饰器后执行。 这种说法是不准确的。但是这些半吊子多半还会不服&#…

海明码的计算和检错纠错

海明码 1.学习前提 学习海明码之前&#xff0c;我们要约定3个原则&#xff1a; 海明码只能检测出2位错&#xff0c;纠1位错(因此不要问如果3位错怎么办等幼稚问题)。海明码默认进行偶校验(除非特殊说明使用奇校验)。海明码是一串由0和1组成的序列(除01外没有其他的值&#x…

ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7

编辑&#xff1a;ll ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7 型号&#xff1a;AD8606ACBZ-REEL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;WLCSP-8 批号&#xff1a;2023 引脚数量&#xff1a;8 安装类型&#xff1a;表面贴装型 AD8606ACBZ-REEL7…

Serverless 冷启动:如何让函数计算更快更强?

问题背景 Serverless 计算也称服务器无感知计算或函数计算&#xff0c;是近年来一种新兴的云计算编程模式。其致力于大幅简化云业务开发流程&#xff0c;使得应用开发者从繁杂的服务器运维工作中解放出来&#xff08;例如自动伸缩、日志和监控等&#xff09;。借助 Serverless…

APT攻击及密码学

目录标题什么是APT攻击&#xff1f;APT攻击过程APT防御技术APT防御过程沙箱处理流程密码学什么是对称加密&#xff1f;什么是非对称加密&#xff1f;SSL工作过程什么是APT攻击&#xff1f; APT攻击即高级可持续威胁攻击&#xff0c;也称为定向威胁攻击&#xff0c;指某组织对特…

fastCGI快速上手

fastCGI OVERVIEWfastCGI一、CGI二、fastCGI三、fastCGI使用1.fastCGI和spawn-fcgi安装2.nginx fastcgi&#xff08;1&#xff09;nginx的数据转发&#xff08;2&#xff09;spawn-fcgi启动&#xff08;3&#xff09;fastCGI进程处理3.fastCGI总结四、其他1.fastCGI环境变量2.…

【图像分割】LabelMe基本使用/标注标签格式转换及可视化

前言 之前一直在做目标检测的相关内容&#xff0c;使用LabelImg标注检测数据轻车熟路。不过最近尝试探索一下图像分割场景&#xff0c;需要用到LabelMe标注用于分割的数据标签&#xff0c;本文进行过程记录。 图像分割数据标签示例 以道路分割为例&#xff0c;下图是deepglo…

基于MVC+SSH的文章发布系统源码数据库毕业论文

目 录 摘要 1 Abstract 2 1 绪论 1.1 课题背景 1.2 研究现状及发展趋势 1.3 课题意义与目的 1.4 研究内容 1.5 论文组织 2 开发工具和技术介绍 2.1 开发工具 2.1.1 Myeclipse简介 2.1.2 MySQL简介 2.1.3 Tomcat简介 2.2 开发技术 2.…

【LInux】MySQL高可用之主从复制

一、Mysql主从架构技术说明 Mysql内建的复制功能是构建大型&#xff0c;高性能应用程序的基础。将Mysql的数据分布到 多个系统上去&#xff0c;这种分布的机制&#xff0c;是通过将Mysql的某一台主机&#xff08;Master&#xff09;的数据复 制到其它主&#xff08;slaves&…

音频模块的介绍

一、术语总结 1.HIFI 级   “HIFI”一词通常指高保真音频&#xff08;High-Fidelity Audio&#xff09;&#xff0c;是指尽可能保持音频信号的原始质量&#xff0c;让听众感受到最真实的音乐表现。因此&#xff0c;“HIFI级”通常指具有高保真音频性能的产品或设备&#xff…

音视频开发十六:SDL基础概念

SDL 纹理渲染 纹理 ​ 在SDL中&#xff0c;纹理是图像的描述信息。用SDL_Texture表示一个纹理对象&#xff08;texture&#xff09;&#xff0c;它是一个用于存储像素数据的结构体类型。 渲染 ​ **互联网解释&#xff1a;**渲染是在电脑绘图中是指用软件从模型生成图像的…