使用electron-builder将项目打包成桌面程序的详细教程

 更新时间:2024年08月09日 09:51:27   作者:派大星的海洋cool  
这篇文章主要介绍了使用electron-builder把web端的项目打包生成桌面程序,并可安装程序,文中通过代码示例和图文结合的方式给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下

描述: 

本章是使用electron-builder把web端的项目打包生成桌面程序,并可安装程序。

首先电脑上需要有node以及git,如果没有请先根据官网下载。并且需要一个github的账号,方便后期使用。

node:https://nodejs.org/zh-cn

git:Git

github:GitHub Docs

一、项目准备

进入到准备好的项目中

二、electron准备

1、安装依赖

electron依赖

npm install npm install --save-dev electron

热更新 / 热加载

npm install nodemon -D

concurrently一个命令启动electron程序

npm install  concurrently

2、创建electron.js

在根目录下创建electron文件夹,

在文件夹里创建一个electron.js,作为electron的主进程

// 结构使用
const { app, BrowserWindow } = require("electron")
//获取地址
const path = require("node:path")
// 创建桌面程序
const createBrowserWindow = () => {
    // 创建大小
    const ELEwin = new BrowserWindow({
        width: "1000",
        height: 800,
 webPreferences: {
            // 开始使用node
            nodeIntegration: true,
            // 不开启上下隔离(如果想使用require就要这个关闭)
            contextIsolation: true,
            // 关闭web安全策略,允许加载本地资源
            webSecurity: false,
            // 可以便用remote方法
            enableRemoteModule: true,
            // ?
            devTools: true,
        }
 
    })
    // 读取链接,url是本地链接
    ELEwin.loadURL("http://localhost:3000/")
    // 打开调试窗口
    ELEwin.webContents.openDevTools()
    //关闭调试窗口
    // ELEwin.webContents.closeDevTools()
 
}
// 调用方法
app.whenReady().then(createBrowserWindow)

3、修改package.json

新增main和dev的变化: "main": "./electron/electron.js",

dev:concurrently+热加载(深度监听变化)+electron .

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

4、运行项目

在终端里运行 npm run dev,开启程序

可以正常运行程序,那么接下来开始使用electron-builder进行打包程序了。

三、electron-builder打包

1、安装依赖

npm  i  electron-bilder -D

2、修改package.json文件

在package.json文件夹里添加

 
"electron:build": "electron-builder",
 
 
 
 
"build": {
    "appId": "com.demo.myApp", 
    "productName": "测试项目", 
    "copyright": "Copyright © 2024 <your-name>", 
    "mac": {
      "category": "public.app-category.utilities"
    },
    "nsis": {
      "oneClick": false,
      "allowToChangeInstallationDirectory": true,
      "deleteAppDataOnUninstall": true 
    },
    "files": [
      "dist/**/*",
      "electron/**/*"
    ],
    "directories": {
      "buildResources": "assets", 
      "output": "dist_electron" 
    }
  }

3、增加preload.js文件

preload.js是在electron文件夹下进行创建

 
// 所有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])
  }
})

4、修改electron.js文件

// 结构使用
const { app, BrowserWindow } = require("electron")
//获取地址
const path = require("node:path")
// 创建桌面程序
const createBrowserWindow = () => {
    // 创建大小
    const ELEwin = new BrowserWindow({
        width: 1000,
        height: 500,
        webPreferences: {
            // 开始使用node
            nodeIntegration: true,
            // 不开启上下隔离(如果想使用require就要这个关闭)
            contextIsolation: true,
            // 关闭web安全策略,允许加载本地资源
            webSecurity: false,
            // 可以便用remote方法
            enableRemoteModule: true,
            // ?
            devTools: true,
            preload: path.join(__dirname, 'preload.js')
        }
    })
    // 读取链接
    // ELEwin.loadURL("http://localhost:3000/")
    // 判断是否是开发者环境
    ELEwin.loadURL(
        process.env.NODE_ENV === 'development'
            ? 'http://localhost:3000'
            : `file://${path.join(__dirname, '../dist/index.html')}`)
 
    // 打开调试窗口
    if (process.env.NODE_ENV === 'development') {
        ELEwin.webContents.openDevTools()
    }
 
    //关闭调试窗口
    // ELEwin.webContents.closeDevTools()
}
// 调用方法
app.whenReady().then(createBrowserWindow)

5、修改config.js文件

这是一定要加的

6、打包本地项目生成dist

运行 npm run build ,生成dist包

7、electron-builder打包

运行 npm run electron:build,结果发现报错,这是需要下载一个包

根据这个地址去下载一个包,放到本地资源:C:\Users\Administrator\AppData\Local\Cache

再次执行命令,发现还是报错

再下载一个包,从CNPM Binaries Mirror

放到C:\Users\Administrator\AppData\Local\electron-builder\Cache

并进行解压

再次运行命令之后就打包成功了

进入dist_electron文件中 

双击应用程序

四、安装程序

点击下一步

选择存储文件 ,进行安装,就可以了

以上就是使用electron-builder将项目打包成桌面程序的详细教程的详细内容,更多关于electron-builder项目打包的资料请关注脚本之家其它相关文章!

相关文章

  • vue 实现特定条件下绑定事件

    vue 实现特定条件下绑定事件

    今天小编就为大家分享一篇vue 实现特定条件下绑定事件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • antd Form组件表单在vue3中的使用方式

    antd Form组件表单在vue3中的使用方式

    这篇文章主要介绍了antd Form组件表单在vue3中的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • axios上传文件错误:Current request is not a multipart request解决

    axios上传文件错误:Current request is not a multipart request

    最近工作中使用vue上传文件的时候遇到了个问题,下面这篇文章主要给大家介绍了关于axios上传文件错误:Current request is not a multipart request解决的相关资料,需要的朋友可以参考下
    2023-01-01
  • 图文详解如何在vue3+vite项目中使用svg

    图文详解如何在vue3+vite项目中使用svg

    SVG指可伸缩矢量图形,用来定义用于网络的基于矢量的图形,下面这篇文章主要给大家介绍了关于如何在vue3+vite项目中使用svg的相关资料,需要的朋友可以参考下
    2021-11-11
  • vue.js实现的全选与全不选功能示例【基于elementui】

    vue.js实现的全选与全不选功能示例【基于elementui】

    这篇文章主要介绍了vue.js实现的全选与全不选功能,结合实例形式分析了vue.js基于elementui实现全选与全不选功能的相关页面渲染、初始化数据及功能函数等相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 浅谈 vue 中的 watcher

    浅谈 vue 中的 watcher

    这篇文章主要介绍了vue 中的 watcher的相关资料,需要的朋友可以参考下
    2017-12-12
  • 浅谈vue项目打包优化策略

    浅谈vue项目打包优化策略

    这篇文章主要介绍了浅谈vue项目打包优化策略,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 三分钟让你快速学会axios在vue项目中的基本用法(推荐!)

    三分钟让你快速学会axios在vue项目中的基本用法(推荐!)

    Axios是一个基于Promise用于浏览器和nodejs的HTTP客户端,下面这篇文章主要给大家介绍了如何通过三分钟让你快速学会axios在vue项目中的基本用法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 利用SpringMVC过滤器解决vue跨域请求的问题

    利用SpringMVC过滤器解决vue跨域请求的问题

    下面小编就为大家分享一篇利用SpringMVC过滤器解决vue跨域请求的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • vue部署到域名二级目录刷新404的解决

    vue部署到域名二级目录刷新404的解决

    这篇文章主要介绍了vue部署到域名二级目录刷新404的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论