Electron-Builder 打包 Vue 项目避坑指南

本文分享了在开发基于Vue的Electron项目时遇到的打包问题,包括NPM源更换、路由调整、electron-builder配置位置、静态资源打包和图标字体显示问题的解决方案。
摘要由CSDN通过智能技术生成

最近在开发一个基于 Vue 的 Electron 项目,在打包时遇到了诸多问题,为了解决这些问题也查阅了非常多的资料,排除了很多坑。现在将可能遇到的问题整理成避坑指南,供大家参考(此避坑指南后续还会继续更新)。

依赖版本

“electron”: “^30.0.1”,
“electron-builder”: “^24.13.3”,
“electron-builder-squirrel-windows”: “^24.13.3”,
“electron-devtools-installer”: “^3.2.0”,
“electron-rebuild”: “^3.2.9”,
“vue”: “^3.4.26”,
node: 18.19.0

1. NPM换源

近期淘宝源更换域名导致非常多的朋友遇到npm无法使用的问题。应在用户文件夹下的 .npmrc 文件中添加这两行:

registry=https://registry.npmmirror.com/
electron_mirror=https://npmmirror.com/mirrors/electron/

2. 路由问题

应当将 Vue-Router 更改为 hash 模式,以避免白屏问题。

3. Builder配置的位置问题

最新版本的electron-builder配置得写在vue.config.js中才能生效。但网上好多文章都是直接在package.json里面配置,还有在electron生成的background.js里配置的。
因此我们应该在项目文件夹的vue.config.js中撰写配置:

module.exports = {
  //判断开发模式还是生产模式
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  //插件配置
  pluginOptions: {
    //electronBuilder配置
    electronBuilder: {
      builderOptions: {
        'productName': 'all electron',//生成exe的名字
        "appId": "com.xi.www",//包名  
        "copyright": "xi",//版权信息
        "directories": { // 输出文件夹
          "output": "electron_output",
        },
        "nsis": {
          "oneClick": false, // 是否一键安装
          "allowElevation": true, // 允许请求提升。若为false,则用户必须使用提升的权限重新启动安装程序。
          "allowToChangeInstallationDirectory": true, //是否允许修改安装目录
          "installerIcon": "./build/icons/icon.ico",// 安装时图标
          "uninstallerIcon": "./build/icons/icon.ico",//卸载时图标
          "installerHeaderIcon": "./build/icons/icon.ico", // 安装时头部图标
          "createDesktopShortcut": true, // 是否创建桌面图标
          "createStartMenuShortcut": true,// 是否创建开始菜单图标
          "shortcutName": "all-electron", // 快捷方式名称
          "runAfterFinish": false,//是否安装完成后运行
        },
        "win": {
          "icon": "build/icons/icon.ico",//图标路径
          "target": [
            {
              "target": "nsis", //利用nsis制作安装程序
              "arch": [
                "x64", //64位
                // "ia32" //32位
              ]
            }
          ]
        }
      }
    }
  }
}

注意严格检查配置格式,如果某个配置的格式或层级关系写得不对,配置是无法生效的,且运行npm run electron:build时有时也不会警告

4. 静态资源的打包问题

对于在渲染进程中使用到的静态资源,Webpack会自动帮我们打包,但是主进程使用到的静态资源却不会被正常打包进应用中,因此我们需要使用extraResourcesextraFiles的方式配置好需要打包的静态资源。
这里我在项目的根目录下新建了一个static文件夹,将静态资源放在里面。
vue.config.js中做如下配置:

pluginOptions: {
        electronBuilder: {
            nodeIntegration: true,
            builderOptions: {
                ...
                extraResources: ["./static/"]
            }
        }
    }

然后在主进程代码中需要用到静态资源的地方,分情况处理静态资源的路径,分为调试时路径和运行时路径两种:

    let iconPath;
    if (process.env.WEBPACK_DEV_SERVER_URL) {
        iconPath = path.join(__dirname, '../static/icon.png');
    } else {
        iconPath = path.join(process.cwd(), '/resources/static/icon.png');
    }

这样就解决了静态资源无法打包的问题。

5. 图标字体不显示

iconfont.cn站点的字体图标下载到本地,采用Font class的方式调用,在开发预览环境中调用正常;可是打包后不显示字体图标。
其他各种框架的基于 字体 实现的图标也遇到了相同的问题。
在vue.config.js中设置 customFileProtocol字段:

pluginOptions: {
	electronBuilder: {
		customFileProtocol: "/"
	}
}

即可解决以上问题。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用electron-builder打包Vue应用程序。下面是一些步骤: 1. 首先,确保你已经在Vue项目中安装了electronelectron-builder。如果还没有安装,可以使用以下命令进行安装: ``` npm install electron electron-builder --save-dev ``2. 在Vue项目的根目录中创建一个`build`目录,并在其中创建一个`electron.js`文件。这将是Electron的主进程文件。 3. 在`electron.js`文件中,添加以下代码: ```javascript const { app, BrowserWindow } = require('electron'); function createWindow() { // 创建浏览器窗口 const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }); // 加载Vue应用的index.html文件 win.loadURL('http://localhost:8080'); // 打开开发者工具 win.webContents.openDevTools(); } // 当Electron完成初始化并准备创建浏览器窗口时调用此方法 app.whenReady().then(createWindow); // 在所有窗口关闭时退出应用 app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); ``` 4. 在Vue项目的`package.json`文件中添加以下脚本: ```json "scripts": { "electron:serve": "vue-cli-service serve", "electron:build": "vue-cli-service build && electron-builder" } ``` 5. 现在,你可以使用以下命令来启动Electron开发服务器: ``` npm run electron:serve ``` 6. 当你准备好打包应用程序时,使用以下命令: ``` npm run electron:build ``` 这将在你的项目根目录下创建一个`dist_electron`文件夹,其中包含已打包Electron应用程序。 请注意,上述代码只是一个基本示例,你可以根据你的需求进行修改和扩展。另外,请确保在使用`electron-builder`之前,你的Vue应用程序已经成功构建。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没头发的米糊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值