当前位置: 首页 > article >正文

尝鲜electron --将已有vue/react项目转换为桌面应用

Electron 是一个强大的框架,它允许开发者使用 Web 技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序。它结合了 Node.js 和 Chromium,就相当于在桌面程序=web和游览器,所以只需要简单的配置就可以转换为桌面应用

注意:无关镜像,有些依赖就是需要从git上面手动下载,所以特别是打包模块,需要一步一步下载手动安装

转换为桌面app

添加依赖

yarn add --dev electron

如果下载失败 根据输出的连接手动添加到用户的eletron目录

C:\Users用户名\AppData\Local\electron\Cache

在这里插入图片描述

在已有的根项目(这里是vite+vue)创建一个electron文件夹并且创建俩个文件,一个主进程文件,一个预加载文件
main.js

const { app, BrowserWindow } = require('electron')
const path = require('path')

let mainWindow

function createWindow() {
//默认的窗口大小 可以windos 快捷栏进行打开
	mainWindow = new BrowserWindow({
		width: 800,
		height: 600,
		webPreferences: {
			preload: path.join(__dirname, 'preload.js'), // 可以根据需要添加
			nodeIntegration: true // 启用Node.js API
		}
	})

	if (process.env.WEBPACK_DEV_SERVER_URL) {
		// 如果是开发环境, 加载开发服务器URL
		mainWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
		if (!process.env.IS_TEST) {
			mainWindow.webContents.openDevTools()
		}
	} else {
		// 如果是生产环境, 加载Vue打包后的文件
		mainWindow.loadFile(path.join(__dirname, '../dist/index.html'))
	}

	mainWindow.on('closed', () => {
		mainWindow = null
	})
}

app.on('ready', createWindow)

app.on('window-all-closed', () => {
	if (process.platform !== 'darwin') {
		app.quit()
	}
})

app.on('activate', () => {
	if (mainWindow === null) {
		createWindow()
	}
})

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])
    }
})
  1. 然后在package。json
    添加指令 注意有type :"moddule"的话会报错 需要注释
  "main": "electron/main.js",
 "electron": "electron .",
 "scripts": {
   "dev": "vite",
   "start": "electron .",

3.先运行项目 然后 yarn start

打包

打包设置
配置build 报答的各个属性 output打包后的安装包输出目录

  "scripts": {
    "dev": "vite",
    "start": "electron .",
    "electron:build": " vite build && electron-builder",
    "build": "vue-tsc --noEmit && vite build",
    "preview": "vite preview",
    "lint": "eslint --fix --ext .vue,.jsx,.ts,.tsx ."
  },
  "build": {
    "electronDownload": {
      "mirror": "https://npm.taobao.org/mirrors/electron/"
    },
    "appId": "com.example.app",
    "productName": "版本管理系统",
    "files": [
      "dist/**/*",
      "electron/**/*"
    ],
    "directories": {
      "output": "setup",
      "buildResources": "build"
    },
    "win": {
      "icon": "asset/NSHM_PHOTO_2024_7_24_03_01_45.jpg" ,
      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "oneClick": false,
      "perMachine": true,
      "allowToChangeInstallationDirectory": true
    }
  },

1.下载依赖

npm install electron electron-builder --save-dev

这里开始这个打包的东西就感觉很慢了 可以根据console 控制台输出手动下载
如果下载失败
可以手动下载 放在目录

C:\Users\用户名\AppData\Local\electron-builder\Cache

在这里插入图片描述

winCodeSign-2.6.0 下载失败,复制手动下载
然后这个cache目录新建winCodeSign文件夹 然后把压缩包进入进行解压
在这里插入图片描述

针对 nsis-3.0.4.1 下载失败:

同理复制console报错的地址下载完成后,新建nis文件夹然后:nsis解压
在这里插入图片描述
在这里插入图片描述

nsis-resourcers-3.4.1
同理下载后 在刚才的创建nsis目录解压
在这里插入图片描述

此时可以运行package.json 配置的打包指令
yarn electron:build
此时控制台会报错,但是配置的setup文件夹已经有安装程序了
在这里插入图片描述


http://www.kler.cn/news/366189.html

相关文章:

  • 10.25学习
  • Typora 、 Minio and PicGo 图床搭建
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 分享一款录屏、直播软件
  • 【纯血鸿蒙】HarmonyOS和OpenHarmony 的区别
  • CSS 中的content-visibility属性
  • 测试和开发工作必备的17个Python自动化代码
  • vue axios请求二次封装以及解释(直接cv实用版)
  • kubenetes/kubesphere搭建报错
  • onlyoffice docker启用jwt并生成jwt
  • 机器学习与金融风控项目篇-day03-业务规则挖掘与特征构建-特征衍生
  • 探索 Lombok 的 @Builder 和 @SuperBuilder:避坑指南(一)
  • Windows10搭建Spark3.4.3安装教程
  • OAK相机的RGB-D彩色相机去畸变做对齐
  • 【动态规划】【简单多状态dp问题】买卖股票相关问题(冷冻期、手续费、限制次数)
  • MATLAB基础应用精讲-【数模应用】本量利分析(Cost-Volume-Profit Analysis)
  • 【论文阅读】ESRGAN+
  • 项目管理软件中这6个小技巧帮助项目经理同时管理多个项目
  • 水轮发电机油压自动化控制系统解决方案介绍
  • LDR6020:为VR串流线方案注入高效能与稳定性
  • 多台NFS客户端访问一台nfs服务器
  • vitepress一键push和发布到github部署网站脚本
  • spring整合使用xml方式整合Druid数据源连接池
  • 邮件系统SSL加密传输,保护你的电子邮件免受网络威胁
  • 基于SSM考研助手系统的设计
  • 小白对时序数据库的理解