vite.legacy.config.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { rmSync } from "node:fs";
  2. import path from "node:path";
  3. import { defineConfig } from "vite";
  4. import react from "@vitejs/plugin-react";
  5. import electron from "vite-electron-plugin";
  6. import { customStart, loadViteEnv } from "vite-electron-plugin/plugin";
  7. import preload from "vite-plugin-electron";
  8. import pkg from "./package.json";
  9. let preloadHasReady = false;
  10. // https://vitejs.dev/config/
  11. export default defineConfig(({ command }) => {
  12. rmSync("dist-electron", { recursive: true, force: true });
  13. const sourcemap = command === "serve" || !!process.env.VSCODE_DEBUG;
  14. return {
  15. resolve: {
  16. alias: {
  17. "@": path.join(__dirname, "src"),
  18. },
  19. },
  20. plugins: [
  21. react(),
  22. electron({
  23. include: ["electron/main"],
  24. transformOptions: {
  25. sourcemap,
  26. },
  27. plugins: [
  28. customStart((args) => {
  29. if (process.env.VSCODE_DEBUG) {
  30. // Start Electron via VSCode
  31. console.log(
  32. /* For `.vscode/.debug.script.mjs` */ "[startup] Electron App",
  33. );
  34. } else {
  35. if (preloadHasReady) {
  36. args?.startup();
  37. } else {
  38. console.log("[startup] waiting for preload");
  39. }
  40. }
  41. }),
  42. // Allow use `import.meta.env.VITE_SOME_KEY` in Main process
  43. loadViteEnv(),
  44. ],
  45. }),
  46. // Preload scripts
  47. preload({
  48. entry: ["electron/preload/index.ts"],
  49. vite: {
  50. build: {
  51. minify: false,
  52. outDir: "dist-electron/preload",
  53. },
  54. },
  55. onstart(args) {
  56. if (preloadHasReady) {
  57. args.reload();
  58. } else {
  59. preloadHasReady = true;
  60. args.startup();
  61. }
  62. },
  63. }),
  64. ],
  65. server: !!process.env.VSCODE_DEBUG
  66. ? (() => {
  67. const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL);
  68. return {
  69. host: url.hostname,
  70. port: +url.port,
  71. };
  72. })()
  73. : undefined,
  74. clearScreen: false,
  75. };
  76. });