vite vue3 electron整合

本文介绍了如何将Vite与Vue3框架结合,并与Electron进行深度整合,包括设置所需依赖包、package.json中脚本和Electron打包配置、主进程main.js的配置,以及解决打包后可能出现的首页白页问题的vite.config.js配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.所需包

"dependencies": {
  "vue": "^3.2.8"
},
"devDependencies": {
  "concurrently": "^7.3.0", //命令拼接
  "cross-env": "^7.0.3",  //node环境切换
  "electron": "^20.0.3",
  "electron-builder": "^23.3.3",  //electron打包工具
  "rimraf": "^3.0.2",  // 快速删除目录
  "wait-on": "^6.0.1",   // 进程等待
  "@vitejs/plugin-vue": "^1.6.0",
  "@vue/compiler-sfc": "^3.2.6",
  "vite": "^2.5.2"
  }

2.package.json script及electron打包配置

"main": "electron/main.js",
  "scripts": {
		"electron": "wait-on tcp:3000 && cross-env NODE_ENV=development electron .",
		"electron:serve": "concurrently -k \"npm run dev\" \"npm run electron\"",
		"electron:build": "rimraf dist && npm run build && electron-builder",
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },
	"build": {
			"productName": "LookLock",
			"copyright": "Copyright © 2022 yeyunlong",
			"mac": {
				"category": "public.app-category.utilities"
			},
			"nsis": {
				"oneClick": false,
				"allowToChangeInstallationDirectory": true
			},
			"win": {
				"icon": "./favicon.ico"
			},
			"files": [
				"dist/**/*",
				"electron/**/*"
			],
			"directories": {
				"buildResources": "assets",
				"output": "dist"
			}
		},

3.electron主进程配置main.js

const {
  app,
  screen,
  BrowserWindow
} = require('electron')
const path = require("path");
const NODE_ENV = process.env.NODE_ENV;
let win;

function createWindow() {
  win = new BrowserWindow({
    // Electron获取屏幕工作窗口尺寸
    width: screen.getPrimaryDisplay().workAreaSize.width,
    height: screen.getPrimaryDisplay().workAreaSize.height,
    icon: path.resolve(__dirname, "favicon.ico"),
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })
  
  // app是否是打包状态
  // app.isPackaged return(Boolean) 
  win.loadURL(
    NODE_ENV === "development" ?
    "http://localhost:3000" :
    `file://${path.join(__dirname, "../dist/index.html")}`
  );
  if (NODE_ENV === "development") {
    win.webContents.openDevTools();
  }
  
}

app.whenReady().then(() => {
  createWindow()
  
  // 允许跨域
  // win.webContents.session.webRequest.onBeforeSendHeaders(
  // 	(details, callback) => {
  // 		callback({
  // 			requestHeaders: {
  // 				Origin: "*",
  // 				...details.requestHeaders
  // 			},
  // 		});
  // 	}
  // );
  // win.webContents.session.webRequest.onHeadersReceived(
  // 	(details, callback) => {
  // 		callback({
  // 			responseHeaders: {
  // 				"Access-Control-Allow-Origin": ["*"],
  // 				...details.responseHeaders,
  // 			},
  // 		});
  // 	}
  // );
  
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
      
    }
  })
})

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

4.preload.js预加载程序(略)

5.vite.config.js base路径配置 (解决打包后首页展示白页)

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
	base: "./",
})
### 如何将 ElectronViteVue3 集成 集成 ElectronViteVue3 是一个常见的开发需求,用于构建桌面应用程序。以下是详细的实现方法和相关配置。 #### 1. 创建项目 使用 `npm create vite` 命令创建一个基于 Vue3Vite 项目: ```bash npm create vite@latest my-electron-vite-project --template vue ``` 进入项目目录并安装依赖: ```bash cd my-electron-vite-project npm install ``` #### 2. 安装 Electron 相关依赖 为了支持 Electron,需要安装以下依赖: - `electron`:Electron 核心库。 - `electron-builder`:用于打包和分发 Electron 应用程序。 - `vite-plugin-electron`:Vite 插件,支持 Electron 主进程和渲染进程的开发模式。 执行以下命令安装这些依赖: ```bash npm install electron electron-builder vite-plugin-electron --save-dev ``` #### 3. 配置 Vite 在 `vite.config.ts` 文件中,添加对 Electron 的支持。以下是一个示例配置[^4]: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ ElementPlusResolver(), // 自动注册图标组件 IconsResolver({ enabledCollections: ['ep'] }), ], dts: './types/components.d.ts', // 自动生成类型声明文件 }), ], server: { port: 3000, // 设置开发服务器端口 }, }) ``` #### 4. 配置 Electron 主进程 在项目根目录下创建一个 `electron` 文件夹,并添加主进程文件 `main.ts` 或 `main.js`。以下是一个简单的主进程代码示例[^3]: ```typescript import { app, BrowserWindow } from 'electron' let mainWindow: BrowserWindow | null = null app.whenReady().then(() => { mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js'), // 预加载脚本 nodeIntegration: false, contextIsolation: true, }, }) mainWindow.loadURL('http://localhost:3000') // 加载 Vite 开发服务器 }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit() }) ``` #### 5. 配置打包工具 创建或修改 `electron-builder.json5` 文件以定义打包配置。以下是一个基本的打包配置[^3]: ```json5 { "productName": "MyElectronApp", "appId": "com.example.myelectronapp", "directories": { "output": "dist" }, "files": [ "dist/**/*", "node_modules/**/*", "package.json" ], "win": { "target": "nsis" }, "mac": { "target": "dmg" } } ``` #### 6. 启动开发环境 在 `package.json` 中添加启动脚本: ```json "scripts": { "dev": "vite", "start": "electron ." } ``` 运行以下命令启动开发环境: ```bash npm run dev npm start ``` #### 7. 打包应用 执行以下命令进行打包: ```bash npm run build npx electron-builder ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YYLAJSX

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

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

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

打赏作者

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

抵扣说明:

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

余额充值