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

使用 electron 把 vue 项目打包成客户端

1. 新建一个Vue项目

        新建一个vue项目,或者在已经写好的vue项目上操作

2. 安装依赖包

        需要安装的包有2个

        electron

        electron-builder

        安装失败的,可看另外一篇解决方法https://blog.csdn.net/Anorry/article/details/144061069?spm=1001.2014.3001.5501

3. 在项目根目录创建文件夹,存放文件

在根目录新建 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"),
    },
  });
  mainWindow.maximize();
  mainWindow.show();
  // 如果是开发环境就把当前运行的web端口做成客户端预览
  // 如果是生产环境就把打包后的index做成客户端预览
  mainWindow.loadURL(
    NODE_ENV === "development"
      ? "http://localhost:8080"
      : `file://${path.join(__dirname, "../dist/index.html")}`
  );
}
 
// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
  createWindow();
 
  app.on("activate", function () {
    // 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他
    // 打开的窗口,那么程序会重新创建一个窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});
 
// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
app.on("window-all-closed", function () {
  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 dependency of ['chrome', 'node', 'electron']) {
      replaceText(`${dependency}-version`, process.versions[dependency])
    }
  })

4. 在 vite.config.js 内配置

配置基本路径 ./ 防止出现打包后打开页面空白

publicPath: './',
transpileDependencies: true,

5. 在 package.json 内配置入口文件,配置一下运行命令

"main": "electron/main.js",

"electron": "wait-on tcp:8090 && cross-env NODE_ENV=development electron .",

6. 安装两个库

  • cross-env:该库让开发者只需要注重环境变量的设置,而无需担心平台设置
  • wait-on:等待资源,此处用来等待url可访问

为了使项目和electron正常运行,需要先运行项目,使得其开发服务器的url可以正常访问,然后再开启electron去加载url。

此处需要安装两个库

7. 配置electron打包命令和配置项

在前面我们安装了 electron-builder 依赖,所以这里无需安装

把下面代码,放到 package.json 内,与 dependencies 同级

"build": {
    "appId": "com.test",
    "productName": "electron打包测试",
    "copyright": "Copyright © 2023",
    "mac": {
      "category": "public.app-category.utilities",
      "icon": "public/icons/icon.icns"
    },
    "win": {
      
    },
    "nsis": {
      "oneClick": false,
      "allowToChangeInstallationDirectory": true
    },
    "files": [
      "dist/**/*",
      "electron/**/*"
    ],
    "directories": {
      "buildResources": "assets",
      "output": "dist_electron"
    }
  }

"electron:build": "vite build  --mode production && electron-builder",

8. 运行命令 npm run electron:build 打包

打包成功后,会在根目录出现一个 dist_electron 文件夹,文件夹下会有一个 .exe 应用程序


http://www.kler.cn/a/430492.html

相关文章:

  • 如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈
  • Linux day1204
  • bishengjdk-8
  • python加密算法
  • 《计算机组成及汇编语言原理》阅读笔记:p128-p132
  • 测试坏块屏蔽文件是是覆盖还是附加
  • liunx docker 部署 nacos seata sentinel
  • TCP/IP协议配置与网络实用命令
  • uniapp 弹出软键盘后打开二级页面,解决其UI布局变动
  • 同城到家预约上门服务解决方案:家政预约同城服务小程序
  • React Native 速度提升 550%
  • 流网络等价性证明:边分解后的最大流保持不变
  • vue3 setup有什么用?
  • 【优选算法篇】剥洋葱式探索:用二分查找精准定位答案(下篇)
  • 一些硬件知识【2024/12/6】
  • 【PX4飞控】二次开发1—加速度转期望姿态算法修改
  • 前端实现复制功能,Uncaught TypeError: Cannot read property ‘writeText‘ of undefined
  • CUDA编程 | 5.5 常量内存
  • Web游戏开发指南:在 Phaser.js 中读取和管理游戏手柄输入
  • 图的割点、割边(Tarjan算法)
  • 第4章:颜色和背景 --[CSS零基础入门]
  • 20241209给Ubuntu20.04系统的的交换分区增加为20GB的步骤
  • wsl2子系统ubuntu发行版位置迁移步骤
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
  • 漫画之家Spring Boot:漫画资源的个性化推荐
  • wlanapi.dll丢失怎么办?有没有什么靠谱的修复wlanapi.dll方法