vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue项目使用electron打包桌面应用

Vue项目使用electron打包桌面应用方式

作者:Z兽兽

本文详细介绍了如何使用Vue3和Electron创建一个桌面应用程序,并提供了一个完整的步骤指南,包括项目初始化、配置、安装依赖、主进程和渲染进程的设置、打包配置以及解决常见问题的方法

1. Vue项目初始化与配置

创建一个Vue3项目,运行项目

环境依赖:node.js(我的是v18.18.1版本)、npm

2. 修改 .npmrc 文件

.npmrc 文件路径:C:\Users\xxx\

文件最后加:

electron_mirror=https://npmmirror.com/mirrors/electron/
electron-builder-binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/

3. 项目中安装electron包

npm install -d electron

或指定版本,我用的是28.0.0

npm install -d electron@28.0.0

如果用npm下载一直失败,可尝试用cnpm下载

//国内镜像源安装 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
//cnpm安装electron
cnpm install -d electron

4. electron的基本配置(主进程和渲染进程)

在项目根目录新建一个electron文件夹,存放两个文件:main.js(主进程)、preload.js(渲染进程)

main.js

const { app, BrowserWindow, Menu } = require("electron");
const path = require("path");
const NODE_ENV = process.env.NODE_ENV;

function createWindow() {
  Menu.setApplicationMenu(null);
  // 创建浏览器窗口
  const mainWindow = new BrowserWindow({
    show: false,
    minWidth: 1440,
    minHeight: 900,
    webPreferences: {
      partition: String(+new Date()),
      preload: path.join(__dirname, "preload.js"),
      nodeIntegration: true,
      contextIsolation: false
    },
  });

  mainWindow.maximize();
  mainWindow.show();
  // 如果是开发环境就把当前运行的web端口做成客户端预览
  // 如果是生产环境就把打包后的index做成客户端预览
  mainWindow.loadURL(
    NODE_ENV === "development"
      ? "http://localhost:8089"
      : `file://${path.join(__dirname, "../dist/index.html")}`
  );

  if (NODE_ENV === "development") {
    mainWindow.webContents.openDevTools(); // 打开开发者工具
  }
}

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

  app.on("activate", function () {
    // 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他打开的窗口,那么程序会重新创建一个窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});

// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。
app.on("window-all-closed", function () {
  if (process.platform !== "darwin") app.quit();
});
 

preload.js

//使用JavaScript在Electron环境中动态替换HTML元素文本,显示Chrome、Node.js和Electron的版本信息:
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])
  }
})
 

该代码会在DOM加载完成后自动执行版本信息替换,确保操作DOM时元素已存在。

process.versions是Electron提供的环境信息对象,包含各组件版本号。

5. 在package.json配置electron入口文件

"type": "module"
"main": "electron/main.js"

6. 使用electron-builder打包

6.1 安装electron-builder

npm install -d electron-builder

或指定版本,我用的是26.0.12

npm install -d electron-builder@26.0.12

同样,如果npm下载失败,改用 cnpm

cnpm install -d electron-builder

6.2 在 package.json 中修改配置

添加author、description、build字段,并在scripts中添加打包命令 electron:build

{
  "description": "app",
  "author": {
    "name": "xxx",
    "email": "xxx@qq.com.cn"
  },
  "scripts": {
    "electron:build": "vite build && electron-builder",
  },
  "build": {
    "appId": "xxx.app",
    "productName": "应用名称",
    "copyright": "Copyright © 2023",
    "directories": {
      "output": "dist_electron"  //打包后的文件夹
    },
    "win": {
      "icon": "/build/icons/icon.ico"  //应用图标,有需要就加,根目录下build文件夹
    },
    "mac": {
      "icon": "/build/icons/icon.icns"
    },
    "linux": {
      "icon": "/build/icons/icon.png"
    },
    "dmg": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "files": [
      "./dist",
      "./electron",
      "!**/node_modules/**"
    ],
    "asar": false,
    "nsis": {
      "oneClick": false,
      "allowElevation": true,
      "allowToChangeInstallationDirectory": true,
      "createDesktopShortcut": true,
      "createStartMenuShortcut": true
    }
  }
}
 

注意:icon需要256*256的格式图片。且不同操作系统的icon类型不一样

6.3 若系统白屏

在 vite.config.ts 中添加 base 字段

base: "./"

7. 完成,执行打包命令

npm run electron:build

打包后的文件,win-unpacked 中有免安装的可以直接打开看

8. 在打包过程中,还可能会失败,这时候就需要下载几个安装包了

我当时下载的网址找不到了,附上我的压缩包,在文章顶部绑定的资源里

8.1 nsis

8.2 winCodeSign

这几个包的作用就是:把我们的应用打包成一个可以安装、卸载、自动创建桌面图标的.exe安装包

总结

至此,所有步骤完成,我们就可以自己创建桌面应用程序了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文