index.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * electron 主文件
  3. */
  4. import dotenv from 'dotenv';
  5. import { app, BrowserWindow, ipcMain } from 'electron';
  6. import is_dev from 'electron-is-dev';
  7. // @ts-ignore
  8. import Store from 'electron-store';
  9. import { join } from 'path';
  10. const store = new Store();
  11. // @ts-ignore
  12. ipcMain.on('store:set', async (e, args) => {
  13. store.set(args.key, args.value);
  14. });
  15. // @ts-ignore
  16. ipcMain.handle('store:get', async (e, args) => {
  17. return await store.get(args);
  18. });
  19. // @ts-ignore
  20. ipcMain.on('store:delete', async (e, args) => {
  21. store.delete(args);
  22. });
  23. dotenv.config({ path: join(__dirname, '../../.env') });
  24. let win = null;
  25. class createWin {
  26. // 创建浏览器窗口
  27. constructor() {
  28. // @ts-ignore
  29. win = new BrowserWindow({
  30. width: 930,
  31. height: 700,
  32. frame: false,
  33. transparent: true,
  34. webPreferences: {
  35. devTools: true,
  36. nodeIntegration: true,
  37. enableRemoteModule: true,
  38. },
  39. });
  40. // win.webContents.openDevTools()
  41. // @ts-ignore
  42. win.maximize();
  43. // win.maximize()
  44. const URL = is_dev
  45. ? `http://localhost:${process.env.PORT}` // vite 启动的服务器地址
  46. : `file://${join(__dirname, '../../dist/render/index.html')}`; // vite 构建后的静态文件地址
  47. // @ts-ignore
  48. win.loadURL(URL);
  49. }
  50. }
  51. app.whenReady().then(() => new createWin());
  52. app.on('window-all-closed', () => {
  53. if (process.platform !== 'darwin') {
  54. app.quit();
  55. }
  56. });
  57. app.on('activate', () => {
  58. if (BrowserWindow.getAllWindows().length === 0) {
  59. new createWin();
  60. }
  61. });