electron的extraFiles和extraResources的配置和使用(附:动态路径拼接问题)

一、process.cwd()

process.cwd()可以获取Node.js进程当前的工作目录,开发时获取到的是项目根目录,打包后获取到的是应用程序根目录,也就是说无论什么环境,都可以精准无误的访问到根目录

二、path.join()方法

path模块是Node.js的内置模块,path.join()可以将多个路径拼接到一起

const path = require('path')
path.join('/a/b/c','/d')  // '/a/b/c/d'

三、extraFiles

extraFiles是打包额外文件配置项,配置extraFiles后,electron-builder在打包时会将指定文件夹复制到打包后应用程序的根目录下(Windows/Linux),或者Content目录下(MacOS)

3.1. 如何配置extraFiles

  • 根目录新建lib文件夹,这里用来存放你的资源

  • vue.config.js中配置extraFiles

const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  transpileDependencies: true,
  pluginOptions: {
    electronBuilder: {
      builderOptions: {
        // 额外文件配置
        extraFiles: ["./lib"],
      },
    },
  },
});

打包后lib文件夹会被复制到打包后应用程序的根目录下(Windows/Linux),或者Content目录下(MacOS)

  • 如图(我是Windows系统)
    在这里插入图片描述

3.2. 如何访问lib文件夹下的资源

使用process.cwd()可以获取Node.js进程当前的工作目录,也就是lib文件夹所在目录,那么extraFiles的目录路径地址就是,开发环境同样适用

path.join(process.cwd(),'/lib/你的文件名字')

四、extraResources

extraResources是打包额外资源配置项,配置extraResources后,electron-builder在打包时会将指定文件夹复制到打包后应用程序的根目录/resources文件夹下(Windows),或者Content/resources文件夹下(MacOS)

4.1. 如何配置extraResources

  • 根目录新建lib文件夹,这里用来存放你的资源

  • vue.config.js中配置extraResources

const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  transpileDependencies: true,
  pluginOptions: {
    electronBuilder: {
      builderOptions: {
        // 额外资源配置
        extraResources: ["./lib"],
      },
    },
  },
});

打包后lib文件夹会被复制到打包后应用程序的根目录/resources文件夹下(Windows),或者Content/resources文件夹下(MacOS)

  • 如图(我是Windows系统)
    在这里插入图片描述

4.2. 如何访问lib文件夹下的资源

多拼接一层resources即可开发环境同样适用

path.join(process.cwd(),'/resources/lib/你的文件名字')
1. 创建项目 首先,需要使用Vue CLI创建一个新的项目。在命令行中输入以下命令: ``` vue create desktop-social-app ``` 在下一步中选择“Manually select features”,然后选择以下功能: - Babel - Router - Vuex - CSS Pre-processors - Linter / Formatter 接下来,选择Sass/SCSS作为CSS预处理器,ESLint + Prettier作为代码检查工具。完成后,进入项目文件夹并启动开发服务器: ``` cd desktop-social-app npm run serve ``` 2. 添加Electron 接下来,需要将Electron添加到项目中。可以使用electron-builder来处理Electron应用程序的构建和打包。首先,安装electronelectron-builder: ``` npm install --save-dev electron electron-builder ``` 接下来,创建一个main.js文件,作为Electron的主进程文件。在该文件中,需要做以下事情: - 创建一个BrowserWindow实例 - 加载Vue应用程序 - 处理应用程序的生命周期事件 main.js代码示例: ```javascript const { app, BrowserWindow } = require('electron') const path = require('path') function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, } }) win.loadURL(process.env.NODE_ENV === 'development' ? 'http://localhost:8080' : `file://${path.join(__dirname, '../dist/index.html')}`) win.on('closed', () => { app.quit() }) } app.on('ready', createWindow) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) ``` 3. 集成Vue和Electron 接下来,需要将Vue应用程序集成到Electron中。在main.js中加载Vue应用程序,并使用ipcMain和ipcRenderer设置主进程和渲染进程之间的通信。 在Vue应用程序中,可以使用Vue CLI提供的插件vue-cli-plugin-electron-builder来处理Electron应用程序的构建和打包。安装该插件: ``` vue add electron-builder ``` 然后修改package.json文件,添加以下配置: ```json { "productName": "Desktop Social App", "appId": "com.example.desktop-social-app", "files": [ "dist/electron/**/*", "public/**/*", "src/main/**/*", "package.json" ], "directories": { "output": "dist" }, "electronBuilder": { "nodeIntegration": true, "builderOptions": { "appId": "com.example.desktop-social-app", "win": { "icon": "public/favicon.ico" } } } } ``` 其中,productName是应用程序的名称,appId是应用程序的唯一标识符。files是需要打包的文件列表,directories.output是打包文件的输出目录。electronBuilder是electron-builder的配置选项,nodeIntegration表示是否允许在渲染进程中使用Node.js模块。 最后,在Vue组件中使用ipcRenderer来发送消息到主进程,使用ipcMain在主进程中监听消息,并做出相应的处理。 4. 开发和打包 现在,可以使用以下命令启动开发服务器和Electron应用程序: ``` npm run electron:serve ``` 要构建和打包Electron应用程序,可以使用以下命令: ``` npm run electron:build ``` 这将在dist目录中生成Electron应用程序的安装文件。 总结 使用Vue和Electron创建桌面社交应用程序是一个有趣的项目,可以学习到如何使用两个流行的技术来创建跨平台的应用程序。在该项目中,需要学习如何集成Vue和Electron,并使用ipcMain和ipcRenderer来处理主进程和渲染进程之间的通信。最后,使用electron-builder来构建和打包Electron应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值