65 lines
1.5 KiB
TypeScript
65 lines
1.5 KiB
TypeScript
import { app, BrowserWindow, screen } from 'electron';
|
|
import is_dev from 'electron-is-dev';
|
|
import { join } from 'path';
|
|
|
|
let mainWindow: BrowserWindow | null = null;
|
|
|
|
class createWin {
|
|
constructor() {
|
|
const displayWorkAreaSize = screen.getAllDisplays()[0].workArea;
|
|
mainWindow = new BrowserWindow({
|
|
width: parseInt(`${displayWorkAreaSize.width * 0.85}`, 10),
|
|
height: parseInt(`${displayWorkAreaSize.height * 0.85}`, 10),
|
|
movable: true,
|
|
// frame: false,
|
|
show: false,
|
|
center: true,
|
|
resizable: true,
|
|
// transparent: true,
|
|
titleBarStyle: 'default',
|
|
webPreferences: {
|
|
devTools: true,
|
|
contextIsolation: false,
|
|
nodeIntegration: true,
|
|
enableRemoteModule: true,
|
|
},
|
|
backgroundColor: '#fff',
|
|
});
|
|
const URL = is_dev
|
|
? `https://localhost:${process.env.PORT}` // vite 启动的服务器地址
|
|
: `file://${join(__dirname, '../index.html')}`; // vite 构建后的静态文件地址
|
|
|
|
mainWindow.loadURL(URL);
|
|
|
|
mainWindow.on('ready-to-show', () => {
|
|
mainWindow.show();
|
|
});
|
|
}
|
|
}
|
|
|
|
app.whenReady().then(() => new createWin());
|
|
|
|
const isFirstInstance = app.requestSingleInstanceLock();
|
|
|
|
if (!isFirstInstance) {
|
|
app.quit();
|
|
} else {
|
|
app.on('second-instance', () => {
|
|
if (mainWindow) {
|
|
mainWindow.focus();
|
|
}
|
|
});
|
|
}
|
|
|
|
app.on('window-all-closed', () => {
|
|
if (process.platform !== 'darwin') {
|
|
app.quit();
|
|
}
|
|
});
|
|
|
|
app.on('activate', () => {
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
new createWin();
|
|
}
|
|
});
|