1、 build/vite/plugin/electron.ts 文件中的所以内容撤销注释
2、build/vite/plugin/index.ts 文件中的几处代码解除注释
(1)引入部分
import { configElectronPlugin } from "./electron";
(2)配置部分
const isElectron = viteEnv.VITE_GLOB_RUN_PLATFORM === 'electron';
if (isElectron) {
vitePlugins.push(configElectronPlugin(viteEnv, isBuild))
}
3、要在创建窗口的时候进行判断配置
import type {BrowserWindowConstructorOptions} from 'electron';
import {app, BrowserWindow, dialog} from 'electron';
import path from 'path';
import {_PATHS} from '../paths';
import {$env, isDev} from '../env';
import {createTray} from './tray';
// 创建窗口
export function createBrowserWindow(options?: BrowserWindowConstructorOptions) {
const win = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
preload: path.join(_PATHS.preloadRoot, 'index.js'),
nodeIntegration: false,
contextIsolation: true,
},
// 应用图标
icon: isDev ? _PATHS.appIcon : void 0,
...options,
});
/**
* 注释:在创建窗口时,会先加载electron的index.html文件,然后再加载Vite服务,
*/
// 开发环境加载Vite服务,生产加载打包文件
if (isDev) {
win.loadURL($env.VITE_DEV_SERVER_URL!)
// 开发环境下,自动打开调试工具
win.webContents.openDevTools()
} else {
win.loadFile(path.join(_PATHS.publicRoot, 'index.html'));
}
// update-begin--author:liaozhiyang---date:20250725---for:【JHHB-13】桌面应用消息通知
if (process.platform === 'darwin') { // 仅 macOS 生效
if (app.dock) {
app.dock.setIcon(path.join(_PATHS.electronRoot, './icons/mac/dock.png').replace(/[\\/]dist[\\/]/, '/'));
}
}
// update-end--author:liaozhiyang---date:20250725---for:【JHHB-13】桌面应用消息通知
// 设置窗口打开处理器
win.webContents.setWindowOpenHandler(({ url }) => {
const win = createBrowserWindow();
win.loadURL(url);
// 阻止创建新窗口,因为已经被接管
return { action: 'deny' };
});
// 当 beforeunload 阻止窗口关闭时触发
win.webContents.on('will-prevent-unload', () => {
const choice = dialog.showMessageBoxSync(win, {
type: 'question',
title: '确认关闭吗?',
message: '系统可能不会保存您所做的更改。',
buttons: ['关闭', '取消'],
defaultId: 1,
cancelId: 1,
noLink: true,
});
// 用户选择了关闭,直接销毁窗口
if (choice === 0) {
win.destroy();
}
});
return win;
}
// 创建主窗口、系统托盘
export function createMainWindow() {
const win = createIndexWindow()
// 设置系统托盘图标
createTray(win);
// 主窗口尝试关闭时,默认不直接退出应用,而是隐藏到托盘
win.on('close', (event) => {
event.preventDefault();
win.hide();
});
return win;
}
// 创建索引窗口
export function createIndexWindow() {
const win = createBrowserWindow({
width: 1600,
height: 1000,
title: $env.VITE_GLOB_APP_TITLE!,
});
// 开发环境加载Vite服务,生产加载打包文件
if (isDev) {
win.loadURL($env.VITE_DEV_SERVER_URL!)
// 开发环境下,自动打开调试工具
// win.webContents.openDevTools()
} else {
win.loadFile(path.join(_PATHS.publicRoot, 'index.html'));
}
return win;
}
4、electron/paths.ts 中修改路径
const publicRoot = path.join(_root, isDev ? '../../public' : '..');
//替换成
const publicRoot = path.join(_root, isDev ? '../../public' : '../..');
5、electron-builder.yaml 中修改文件值(自己对比下吧)
appId: 'com.jeecg.boot3'
productName: 'vote'
files:
- 'dist/**/*'
- 'package.json'
- '!node_modules/**/*'
- '!dist-electron/**/*'
extraResources:
- from: 'dist/electron/'
to: 'resources/'
directories:
# 输出目录
output: 'dist-electron'
win:
# win exe 程序图标
icon: 'electron/icons/app.ico'
artifactName: 'jeecgboot-setup-${version}.exe'
# 安装包配置
nsis:
oneClick: false
# 是否允许用户选择安装目录
allowToChangeInstallationDirectory: true
# 是否创建桌面快捷方式
createDesktopShortcut: true
# 安装程序的图标
installerIcon: 'electron/icons/installer.ico'
# 添加环境变量
asarUnpack:
- '**/*.node'
6、修改package.json中参数
{
"main": "dist/electron/main.js",
"scripts": {
"electron:dev": "cross-env VITE_GLOB_RUN_PLATFORM=electron npm run dev",
"electron:build-all": "npm run electron:build-web && npm run electron:build-app",
"electron:build-web": "cross-env VITE_GLOB_RUN_PLATFORM=electron NODE_ENV=production NODE_OPTIONS=--max-old-space-size=8192 vite build --mode prod_electron && cross-env VITE_GLOB_RUN_PLATFORM=electron esno ./build/script/postBuild.ts && esno ./build/script/copyChat.ts",
"electron:build-app": "esno ./electron/script/buildBefore.ts && electron-builder && esno ./electron/script/buildAfter.ts",
},
"devDependencies": {
"electron": "35.1.4",
"electron-builder": "^26.0.12",
"vite-plugin-electron": "^0.29.0",
}
}
以上就是对无法进行electron打包的优化,希望能帮助到你


614

被折叠的 条评论
为什么被折叠?



