electron套壳vue2项目

剧情回顾

最近lender提了个需求,说最近项目可能要变动一下,把网页端变成桌面端,小手一挥,博主就开始库库的找。奈何网上教程一大堆,但是没找到一个对版的,不是安装过程有错,就是执行命令过程失误。一个教程文章得搜五个报错文章,虽然最终我做出来噜,但是很费劲,所以这篇用来总结一下。
PS:基本上你遇到的坑不会比我多了,如果有问题直接贴在评论区,我要是解决不了那就是解决不了(狗头)
在这里插入图片描述

electron安装

首先新建一个vue项目,在选项中选择vue2,按默认配置生成。如果在生成过程中出现错误中断,请先删除 node_modules 文件夹,不用再安装,因为后续会再装
PS:如果你是老项目,请无视上面这一步,直接把 node_modules 文件夹删除。

vue create electron-vue

接着在项目根目录下创建 background.js 并输入如下内容,调整electron应用程序大小及打包形式

const { app, BrowserWindow, screen, ipcMain, nativeTheme } = require('electron')
const path = require('path')

// 热加载
try {
  require('electron-reloader')(module,{});
} catch (_) {}

const createWindow = () => {
  const win = new BrowserWindow({
    width: screen.getPrimaryDisplay().workAreaSize.width, // 直接显示最宽窗口,非最大化
    height: screen.getPrimaryDisplay().workAreaSize.height, // 直接显示最高窗口,非最大化
  })
  // 判断当前环境
  if (process.env.NODE_ENV === 'development') {
    win.webContents.openDevTools() // 自动打开工作台
    win.loadURL('http://localhost:8080') // 加载本地服务地址
  } else {
    win.loadFile('./dist/index.html') // 加载打包后的静态页面
  }
}

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

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

然后调整package.json为如下内容,增加作者、描述、运行命令、electron的各种包等
PS:老项目复制main、electron包、命令、cross-env等部分,如果没author和description记得补充

{
  "name": "electron-vue",
  "version": "0.1.0",
  "private": true,
  "main": "background.js", // 刚才创建的background.js
  "description": "this is test vue and electron project", // 必须有不然electron打包会报错
  "author": "GuoWei-Liu", // 必须有不然electron打包会报错
  "scripts": {
    "dev": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "electron-squirrel-startup": "^1.0.0",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@electron-forge/cli": "^6.4.2",
    "@electron-forge/maker-deb": "^6.4.2",
    "@electron-forge/maker-rpm": "^6.4.2",
    "@electron-forge/maker-squirrel": "^6.4.2",
    "@electron-forge/maker-zip": "^6.4.2",
    "@electron-forge/plugin-auto-unpack-natives": "^6.4.2",
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "babel-eslint": "^10.1.0",
    "cross-env": "^7.0.2",
    "electron": "^24.8.8",
    "electron-reloader": "^1.2.3",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

接着运行 npm i 指令,安装electron所需要的包
安装期间如果报出问题 Error: certificate has expired 这种报错,一般有以下两种情况:
1.使用 cnpm 的,最近淘宝镜像有点问题,请执行npm并切换源 npm config set registry https://registry.npmmirror.com
2.安全证书不安全导致的,请执行 set NODE_TLS_REJECT_UNAUTHORIZED=0 暂时禁用验证

npm i

electron配置

安装完成后,我们要在在命令行执行 npx electron-forge import 生成electron-forge的配置文件

npx electron-forge import

生成的文件名为 forge.config.js ,内容如下:

module.exports = {
  packagerConfig: {
    asar: true,
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {},
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin'],
    },
    {
      name: '@electron-forge/maker-deb',
      config: {},
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {},
    },
  ],
  plugins: [
    {
      name: '@electron-forge/plugin-auto-unpack-natives',
      config: {},
    },
  ],
};

接着回到 package.json ,根据环境变量调整start和make命令,此调整一定要在npx后调整,因为electron-forge会进行命令覆盖

    ……
    "start": "cross-env NODE_ENV=development electron-forge start",
    "make": "cross-env NODE_ENV=production electron-forge make"
    ……

开发环境运行

首先打开两个命令行,先在命令行1中执行 npm run dev 命令,等待vue服务器打开
这里注意,要确定好本地服务器的地址,一定要与 background.jsloadURL 函数的地址对上

npm run dev
……
  App running at:
  - Local:   http://localhost:8080/
  - Network: http://192.168.20.103:8080/

  Note that the development build is not optimized.
  To create a production build, run npm run build. 

服务器打开后,在在命令行2中执行 npm run start 命令开启应用,效果图如下所示

npm run start

在这里插入图片描述

生产环境打包

和开发环境一样,打开两个命令行,先在命令行1中执行 npm run build 命令,等待文件打包完成
这里重点注意几点!!很多小坑:
1.将 vue.config.js 文件里的 publicPath 字段默认值改为 ./,不然会出现打包完成后页面空白现象。
2.使用了axios需要调整baseURL字段,改为服务器接口地址,不然默认打包完访问的api地址是file:///
3.使用了router需要把mode字段改为hash,要不路由会失效
4.使用了cookie需要改一下编码逻辑,可以用localStorage,不然在应用程序里面不识别。
5.确定好打包的位置,一定要要与 background.jsloadFile 函数的地址对上。

npm run build

打包完成后,在命令行2中执行 npm run make 命令,将vue打包成应用程序。打包成功的应用程序可以在 out/electron-vue-win32-x64/electron-vue.exe 点击查看,效果图如下

npm run make

在这里插入图片描述

  • 31
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Electron打包Vue2项目,需要使用以下步骤: 1. 安装ElectronElectron Builder: ``` npm install electron electron-builder --save-dev ``` 2. 在package.json文件中添加以下内容: ``` "build": { "productName": "YourAppName", "appId": "com.yourcompany.yourapp", "directories": { "output": "dist_electron" }, "files": [ "dist/**/*", "node_modules/**/*", "main.js" ], "extraResources": [ { "from": "src/assets", "to": "assets", "filter": [ "**/*" ] } ], "mac": { "category": "your.app.category", "icon": "build/icon.icns" }, "win": { "target": "nsis", "icon": "build/icon.ico" }, "linux": { "category": "your.app.category", "icon": "build/icon.png", "target": [ "AppImage", "deb" ] } } ``` 这个配置文件告诉Electron Builder如何打包你的应用程序,包括产品名称、应用程序ID、输出目录、需要打包的文件、额外的资源和操作系统特定的设置。 3. 创建一个入口文件main.js,该文件负责启动Vue应用程序和Electron: ``` const { app, BrowserWindow } = require('electron') const path = require('path') const url = require('url') let win function createWindow() { win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) win.loadURL(url.format({ pathname: path.join(__dirname, 'dist/index.html'), protocol: 'file:', slashes: true })) win.on('closed', () => { win = null }) } app.on('ready', createWindow) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { if (win === null) { createWindow() } }) ``` 这个文件创建一个Electron窗口,并将Vue应用程序加载到窗口中。 4. 运行以下命令,将Vue应用程序构建到dist目录中: ``` npm run build ``` 5. 运行以下命令,以将Vue应用程序打包为Electron应用程序: ``` npm run electron:build ``` 这将生成一个可执行文件,可以在操作系统上运行你的Electron应用程序。 希望这些步骤可以帮助你打包Vue2项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值