使用Electron打包React项目

news2024/11/19 17:52:26

1、下载Electron

Electron中文官网地址:https://www.electronjs.org/zh/docs/latest/
Electron下载如果单纯使用npm的话,会出现n多问题
所以建议使用国内的淘宝镜像

npm config set registry https://registry.npmmirror.com/

然后下载

cnpm install --save-dev electron

下载完成后package.json文件出现以下依赖,成功

在这里插入图片描述

2、修改package.json文件

在package.json文件中增加一行

"homepage":"./",

否则打包之后的index.html文件打开为空白

3、打包react项目

运行命令

npm run build

项目中出现build文件夹
在这里插入图片描述

确定打包后的文件是否能够正常运行
全局安装 serve

npm i serve -g

然后运行build文件

serve build

4、使用vscode或其他工具打开build文件夹

将原来的项目关掉,使用其他工具打开刚刚生成的build文件夹
当然也可以选择不单独打开build文件夹,但是要把终端中的路径改为build下的

5、初始化项目

运行命令

npm init

会出现一些选项,按照自己的需求来填就行
其中
license这个选项windows用户填 MIT ,其他的系统要上网查
main 选项填 main.js

然后就会出现,package.json文件夹

6、创建main.js和preload.js文件

在build根目录创建这两个文件
在这里插入图片描述

main.js

const { app, BrowserWindow } = require('electron')
const path = require('path')
console.log("hello")

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  win.loadFile('index.html')
}

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 type of ['chrome', 'node', 'electron']) {
      replaceText(`${type}-version`, process.versions[type])
    }
  })
  

7、下载Forge 脚手架并进行设置

运行命令下载脚手架

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

进行设置

npx electron-forge import

但是,设置这一步基本都会出错,所以我们使用以下方式进行:

1、设置npm electron默认安装路径的环境变量

npm config set ELECTRON_MIRROR http://npmmirror.com/mirrors/electron/

2、修改package.json文件

{
  "name": "electron-react",//用自己的
  "version": "1.0.0",//用自己的
  "description": "electron-test",//用自己的
  "main": "main.js",//用自己的
  "scripts": {
    "start": "electron-forge start",//加上
    "package": "electron-forge package",//加上
    "make": "electron-forge make",//加上
    "e-start": "electron ."//加上
  },
  "keywords": [
    "123456"
  ],
  "author": "gk",
  "license": "MIT",
  "devDependencies": {
    "@electron-forge/cli": "^6.0.4",//版本号根据自己下载的electron-forge/cli版本号来,下面的版本号都跟这个相同
    "@electron-forge/maker-deb": "^6.0.4",//版本号跟@electron-forge/cli同  加上
    "@electron-forge/maker-rpm": "^6.0.4",//版本号跟@electron-forge/cli同  加上
    "@electron-forge/maker-squirrel": "^6.0.4",//版本号跟@electron-forge/cli同  加上
    "@electron-forge/maker-zip": "^6.0.4",//版本号跟@electron-forge/cli同  加上
    "electron": "^22.0.0"//用自己的
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"//加上
  },
  //以下的全部加上
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "electron_demo"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ]
    }
  }
}

3、下载依赖
运行命令

cnpm install 或者 npm install 
//npm install可能会下载失败

8、打包

运行命令

npm run make

这里会有点久,需要耐心等待

9、运行exe文件

在打包完成之后,会在build文件夹下生成out文件夹
打开out文件夹
在这里插入图片描述
运行exe文件,即可

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

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

相关文章

LeetCode 81. 搜索旋转排序数组 II

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 81. 搜索旋转排序数组 II,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetC…

年后准备换工作的软件测试工程师们,你准备好了吗?

需要严肃说明的是:面试题库作为帮助大家准备面试的辅助资料,但是绝对不能作为备考唯一途径,因为面试是一个考察真实水平的,不是背会了答案就可以的,需要你透彻理解的,否则追问问题答不出来反而减分&#xf…

什么是dapp?如何在web中开发dapp?

web3 “Web3.0”是对“Web2.0”的改进,在此环境下,用户不必在不同中心化的平台创建多种身份,而是能打造一个去中心化的通用数字身份体系,通行各个平台。更像是一种概念吧。 区块链 区块链(Blockchain)是由…

54-64-k8s-集群监控-高可以用集群-交付部署

54-k8s-集群监控-高可以用集群-交付部署 k8s集群监控 1、概述 一个好的系统,主要监控以下内容 集群监控 节点资源利用率节点数运行Pods Pod监控 容器指标应用程序【程序占用多少CPU、内存】 2、监控平台 使用普罗米修斯【prometheus】 Grafana 搭建监控平台…

JS实现鼠标悬停变色

JS实现鼠标悬停变色 案例池子: JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实现一段时间之后关闭广告 JavaScript实现按键快速获取输入框光标 …

第二证券|紧盯“有诺不行”隐疾 补齐上市公司高质量发展“短板”

有诺不可”的典型事例 “言而有信”是上市公司高质量开展的重要环节。近日,证监会印发的《推动提高上市公司质量三年举动计划(2022-2025)》(下称《举动计划》)提出,将着力处理管理领域杰出问题&#xff0c…

(Java)Thymeleaf学习笔记——动力节点

前言 学SpringMVC找课程时就了解到要学习thymeleaf这种Java模板引擎,但本着不用不学的原则就直接跳过,当实践第一个SpringMVC程序helloworld,遇见了thymeleaf,那么就先解决 💡thymeleaf 知识点,再来学习Sp…

CSS新增样式----圆角边框、盒子阴影、文字阴影

在CSS中新增了三个样式,分别是圆角边框,盒子阴影,文字阴影。 初识圆角边框: border-radius属性用于设置元素的外边框圆角 语法如下: border-radius:length;原理如下: [椭]圆与边框的交集形成圆角效果。…

档案知识:声像档案的数字化处理与保存

声像档案是档案家族中较晚出现的成员,主要包括音像资料、图像资料、图片等,伴随着当今科技的发展进步,声像档案的数字化管理正逐步替代传统声像档案的管理方式,成为当前的发展主流。 虽然声像档案相较于传统文字档案,…

GFS分布式文件系统

GFS分布式文件系统 什么是GFS分布式文件系统 GFS(GlusterFS) 是一个开源的分布式文件系统。 由存储服务器、客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。 没有元数据服务器组件,这有助于提…

黑金ZYNQ7100配置HDMI驱动并测试

Linux系统移植系列 Linux系统移植专栏地址 https://blog.csdn.net/qq_41873311/category_12127932.html 一个写了五篇博客,成功在黑金ZYNQ7100搭建了属于我自己的Linux系统 但是缺少显示模块,所以本文就配置个HDMI驱动来完成图像的显示 环境 hdf设计…

N年后牛的数量

1、题目 第一年农场有 1 只成熟的母牛 A,往后的每年: 1)每一只成熟的母牛都会生一只母牛 2)每一只新出生的母牛都在出生的第三年成熟 3)每一只母牛永远不会死 2、思路 举例说明: 可得到递推式为&…

文华财经期货量化策略抄底准确率高的指标公式,逃顶抄底精准共振起涨信号幅图指标

期货指标公式的万变不离...离均线远了就要往均线靠,这就是乖离。 做多的衰竭,做空的无力,也能根据乖离来判断。 量能的重要性不言而喻,他是一切做多做空的力量来源 摒弃了量能的趋势就是没有方向的车,金叉之后也可能突…

C++11 智能指针

文章目录1. 智能指针出现的意义1.1 内存泄漏1.2 智能指针初识2. C标准库中的智能指针2.1 auto_ptr2.2 std::unique_ptr2.3 std::shared_ptr2.4 std::weak_ptr3. 智能指针中的定制删除前言: 智能指针,它是指针嘛?它是一个类具有指针的功能&…

HTML期末学生大作业-拯救宠物网页作业html+css

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Redis主从复制与Cluster集群

目录 一.Redis集群模式 二、Redis 主从复制 2.1 主从复制介绍 2.2 主从复制的作用 2.3 主从复制流程: 三. Redis主从复制搭建 3.1 实验步骤 ​ 3.2 修改master节点配置文件 3.3 修改slave节点的配置文件 3.4 验证主从效果 3.4.1 主节点查看日志&#xff0…

数据图表-FineReport复选按钮控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件执行批量选中操作,如下图所示: 1.2.2 参数控件 参数面板处可以通过该控件执行查询操作,如下图所示: 1.3 如何添加…

APP上架需要的准备和流程

一上架iOS应用市场前的准备​ 1.选择适合自己的苹果开发者账号​ (1) 个人账号(Individual):费用99美金一年, 该账号在App Store销售者只能显示个人的ID,比如zhitian zhang,单人使用。个人账号只能有一个开发者。100…

护眼灯护眼有效果吗?一文了解护眼灯到底有没有用

关于护眼灯是否对预防近视、保护眼睛有效,很多人都会有怀疑态度,会认为是智商税,其实这也因人而异,有的人眼睛天生不太敏感,所以对护眼灯的光线感知不强,很难体会到实际的作用;有的人也买到较差…

ccf寻宝!大冒险!python满分(敲开心~)

寻宝 大冒险 题目传送:http://118.190.20.162/view.page?gpidT147 思路及代码: 核心点就是哈希。 之前刷的是70分,找不到之前的代码了,大概是建了一个很大的表,然后一点点比较吧。 今天再刷,上来就是…