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

electron打包基本教程

从0开始搭建

  • 概要
  • 步骤
    • 基础软件
    • 运行项目
    • 打包项目
  • 注意事项

概要

将html打包成桌面的主流有electron和nwjs,nwjs更加简单,但是使用效果不如electron,electron打包比较麻烦,但是效果比较好,反正各有优势和缺点

步骤

基础软件

  1. nodejs
    官网下载
    阿里下载
# 验证版本
node -v
v22.13.0
  1. npm
    nodejs自带npm,直接查看版本
npm -v
10.9.2
  1. cnpm
    国内用户需安装这个,你懂的
#使用 npm 全局安装 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
  1. 生成项目
  • 创建目录 my-electron-app
  • 进入目录,命令创建
cnpm init -y
# -y 参数表示使用默认配置快速初始化,免去手动回答一系列问题的步骤。
  1. 添加依赖
# 用于开发
cnpm install electron --save-dev
# 用于打包
cnpm install electron-builder --save-dev
  1. 指定国内地址
    打包时会到github下载很多文件,如果连接github不顺畅,可以指定国内地址
  "build": {
  	"electronDownload": {
  	  "mirror": "https://registry.npmmirror.com/-/binary/electron/"
  	},
    "appId": "com.cn.app",
    "mac": {
      "target": "dmg"
    },
    "win": {
      "target": "nsis"
    },
    "linux": {
      "target": "AppImage"
    }
  },
  1. 完整项目结构
    在这里插入图片描述
  • app:需要打包的html网站,这里测试添加了一个简单的html单文件
  • dist:打包后文件目录
  • node_modules:node依赖包,自动生成的
  • main.js:项目主入口,package.json中指定
  • package.json:项目结构

main.js

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

function createWindow() {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    });

    // win.loadURL('https://github.com');
	win.loadFile(path.join(__dirname, 'app', 'index.html'));
}

app.whenReady().then(createWindow);

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

app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
        createWindow();
    }
});

package.json

{
  "name": "my-electron-app",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "build": "electron-builder"
  },
  "build": {
  	"electronDownload": {
  	  "mirror": "https://registry.npmmirror.com/-/binary/electron/"
  	},
    "appId": "com.cn.app",
    "mac": {
      "target": "dmg"
    },
    "win": {
      "target": "nsis"
    },
    "linux": {
      "target": "AppImage"
    }
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron": "^34.2.0",
	"electron-builder": "^25.1.8"
  }
}

运行项目

# cmd命令
cnpm run start

运行后出现浏览器,里面是app包含的网站
在这里插入图片描述

打包项目

cnpm run build
  • 打包中会出现访问winCodeSign(github)失败,这个主要用于软件签名,防止软件被篡改,如果签名失败也会打包项目,但是项目名字是win-unpacked,意思未签名打包目录
  • 打开win-unpacked
  • 在这里插入图片描述

注意事项

  1. 远程打包失败,可以下载electron到本地,指定本地打包
    https://npmmirror.com/mirrors/electron/
    更多方法豆包[electron国内下载打包方法]
http://www.dtcms.com/a/20069.html

相关文章:

  • Flutter中 List列表中移除特定元素
  • QEMU 搭建arm linux开发环境
  • 纪念日倒数日项目的实现-【纪念时刻-时光集】
  • Debezium系列之:时区转换器,时间戳字段转换到指定时区
  • SpringCloud Alibaba
  • tensorflow环境中已安装库
  • 【Java集合二】HashMap 详解
  • 【NLP 24、模型训练方式】
  • Leetcode 算法题 88. 合并两个有序数组
  • 【含文档+源码】基于Web的在线课堂测试课程考评系统的开发与实现
  • GPQA (Graduate-Level Google-Proof QA Benchmark) 数据集
  • 图像处理篇---基本OpenMV图像处理
  • HackerRank C++面试,中等难度题目 - Attribute Parser
  • Bandana论文阅读
  • 复杂电磁环境下无人机自主导航增强技术研究报告——地磁匹配与多源数据融合方法,附matlab代码
  • 基于多元高斯分布的异常检测技术原理与实现
  • lean4安装
  • 论文阅读2——S波段宽波束圆极化天线设计
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】
  • 初阶数据结构:树---二叉树的链式结构
  • LeetCode1706
  • 使用 React 16+Webpack 和 pdfjs-dist 或 react-pdf 实现 PDF 文件显示、定位和高亮
  • [Java网络安全系列面试题] GET 和 POST 的区别在哪里?
  • 1441. 用栈操作构建数组 中等
  • 《当DeepSeek遇上豆包:AI大模型的华山论剑》
  • 我用 Cursor 开发了一款个人小记系统
  • B站视频同步思维导图(全)
  • 利用AI智能体创建云端文档知识库并集成第三方数据源(下)
  • 开发指南101-拖动排序
  • 细说STM32F407单片机RTC的基本原理及闹钟和周期唤醒功能的使用方法