electron打包Vue前端

Electron-Forge 打包Vue项目

效果:electronforge可将前端静态页面打包成.exe、.deb和.rpm等,能适配各种平台

  • 示例:Windows环境下将前端 Vue 项目打包成exe文件

  • 打包后的 exe 文件

  • 运行 exe 文件

一、项目准备

开源项目 RouYi 下载

  1. 本地环境
bash 复制代码
# 环境版本信息
node -v  # v20.11.1
npm -v  # 10.2.4

# 设置源
npm config set registry https://registry.npmmirror.com/

# 查看 node 源
npm config get registry
  1. 安装依赖
bash 复制代码
# 切换到Vue前端项目
cd ruoyi-ui
# 安装Vue所需依赖
npm install
# 运行 Vue 项目
npm run dev
  1. 报错
  • 3.1 原因:Node版本高了

  • 3.2 修改 package.json

  • 3.3 修改后的 package.json

js 复制代码
  "scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build:prod": "vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  }, 

二、项目配置

2. 修改项目配置

ruoyi-ui 下的配置修改

2.1 .env.production
js 复制代码
# 修改前
VUE_APP_BASE_API = '/prod-api'

# 修改后(与后端保持一致)
VUE_APP_BASE_API = 'http://localhost:8080'
2.2 vue.config.js
js 复制代码
# 修改前:静态资源路径
publicPath: process.env.NODE_ENV === "production" ? "/" : "/",

# 修改后
publicPath: './',
 
# 实际接口地址与后端Sprintboot项目保持一致
target: `http://localhost:8080`,
2.3 修改路由配置

进入 ruoyi-ui/src/router/index.js

js 复制代码
# 修改前:url不带#
mode: 'history'

# 修改后:url带#
mode: 'hash'
2.4 全局修改Cookies为localStorage

由于打包成exe或deb这类可执行文件后,本地是没有 Cookies

  1. 全局搜索Cookies.get并替换为localStorage.getItem

  2. 全局搜索Cookies.set并替换为localStorage.setItem

  3. 全局搜索Cookies.remove并替换为localStorage.removeItem

  4. 进入ruoyi-ui/src/views/login.vue

  • 修改前
js 复制代码
localStorage.setItem("username", this.loginForm.username, { expires: 30 });
localStorage.setItem("password", encrypt(this.loginForm.password), { expires: 30 });
localStorage.setItem('rememberMe', this.loginForm.rememberMe, { expires: 30 });
  • 修改后
js 复制代码
localStorage.setItem("username", this.loginForm.username);
            localStorage.setItem("password", encrypt(this.loginForm.password));
            localStorage.setItem('rememberMe', this.loginForm.rememberMe);
2.5 退出登录白页问题

进入 ruoyi-ui/src/layout/components/Navbar.vue

  • 修改前

  • 修改后

js 复制代码
    async logout() {
      this.$confirm('确定注销并退出系统吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.$store.dispatch('LogOut').then(() => {
          this.$router.push('/login')
        })
      }).catch(() => {});
    }

三、开始打包

3.1 打包 Vue
bash 复制代码
npm run build:prod
  • 报错

  • 原因

    node版本过高

  • 解决方案
    进入 ruoyi-ui/package.json

  • 修改前

  • 修改后

js 复制代码
"scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  },

以上配置修改后,重新执行打包命令

bash 复制代码
npm run build:prod

打包好后出现 ruoyi-ui/dist 文件夹

3.1 下载 electron 骨架项目

第一步 :下载把electron官方例子

bash 复制代码
git clone https://github.com/electron/electron-quick-start 

第二步:配置项目

  • 2.1 删除 index.htmlpackage-lock.json
  • 2.2 将 Vue 打包后的dist放入项目 electron-quick-start 根目录上
  • 2.3 入口文件 main.js ,修改打包的文件路径为我们的index.html
js 复制代码
// 原始内容 
mainWindow.loadFile('index.html') 

// 修改后的内容 
mainWindow.loadFile('./dist/index.html') 
  • 2.4 进入 package.json
js 复制代码
// 原始内容 
  "devDependencies": {
    "electron": "^29.2.0"
  }
// 修改后的内容 
  "devDependencies": {}

第三步:安装依赖

  • 2.1 配置npm

如果不配置,为 electron-quick-start 项目下载 electron 超级慢,甚至下载失败!!!

寻找电脑上的 .npmrc:默认c盘下

Everything是一款在系统中快速搜索文件的软件

.npmrc 中添加最后两行

bash 复制代码
prefix=D:\Environment\nodejs\node_global
cache=D:\Environment\nodejs\node_cache
registry=https://registry.npmmirror.com/

disturl=https://registry.npmmirror.com/-/binary/node
electron_mirror=https://registry.npmmirror.com/-/binary/electron/
  • 下载依赖
bash 复制代码
npm install --save-dev electron
npm install --save-dev @electron-forge/cli
npm exec --package=@electron-forge/cli -c "electron-forge import"
npm install --save-dev @electron-forge/plugin-fuses
  • 控制台输出
bash 复制代码
# 运行预览打包后的exe
npm run start
# 构建分发包形成单个exe
npm run make
  • Windows下成功打包exe

electron-forge 会检测当前系统是Windows,还是Linux,最终分发成.exe、.deb或.rpm都是看你当前执行 npm run make

js 复制代码
# 当然你可以强制修改平台,通过添加参数platform
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make --platform=linux"
  },

But ERROR

Windows 上打包成 .deb不被允许

依据 electronforge 官网解释

Electron Forge 官网 deb 描述

你只能在 Linux 或者 macOS操作系统上打包 deb 文件,因此 Windows 操作系统下无法构建.deb的哦!!!

参考网站:

  1. electronforge官网

  2. ruoyi-vue | electron打包教程(超详细)

  3. 将Vue项目打包为Windows应用(.exe)

  4. electron-forge 流水线踩坑记录

相关推荐
gqkmiss32 分钟前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247553 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255023 小时前
前端常用算法集合
前端·算法
真的很上进3 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203984 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2344 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1235 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~5 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语5 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport5 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap