diff --git a/apps/desktop/electron.vite.config.ts b/apps/desktop/electron.vite.config.ts index 2c3d00a889..350708fb1a 100644 --- a/apps/desktop/electron.vite.config.ts +++ b/apps/desktop/electron.vite.config.ts @@ -1,26 +1,41 @@ import { resolve } from "path"; import { defineConfig, externalizeDepsPlugin } from "electron-vite"; +import { loadEnv } from "vite"; import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; -export default defineConfig({ - main: { - plugins: [externalizeDepsPlugin()], - }, - preload: { - plugins: [externalizeDepsPlugin()], - }, - renderer: { - server: { - port: 5173, - strictPort: true, +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd(), ""); + const remoteApi = env.VITE_REMOTE_API; + const remoteWs = remoteApi?.replace(/^https/, "wss").replace(/^http/, "ws"); + + return { + main: { + plugins: [externalizeDepsPlugin()], }, - plugins: [react(), tailwindcss()], - resolve: { - alias: { - "@": resolve("src/renderer/src"), + preload: { + plugins: [externalizeDepsPlugin()], + }, + renderer: { + server: { + port: 5173, + strictPort: true, + ...(remoteApi && { + proxy: { + "/api": { target: remoteApi, changeOrigin: true }, + "/auth": { target: remoteApi, changeOrigin: true }, + "/uploads": { target: remoteApi, changeOrigin: true }, + "/ws": { target: remoteWs, changeOrigin: true, ws: true }, + }, + }), + }, + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": resolve("src/renderer/src"), + }, + dedupe: ["react", "react-dom"], }, - dedupe: ["react", "react-dom"], }, - }, + }; }); diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 788e95d388..63f66dd7dd 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -5,6 +5,7 @@ "main": "./out/main/index.js", "scripts": { "dev": "electron-vite dev", + "dev:remote": "electron-vite dev --mode remote", "build": "electron-vite build", "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", diff --git a/apps/desktop/src/renderer/src/App.tsx b/apps/desktop/src/renderer/src/App.tsx index d8fa988a68..23bdd0fb8d 100644 --- a/apps/desktop/src/renderer/src/App.tsx +++ b/apps/desktop/src/renderer/src/App.tsx @@ -39,12 +39,14 @@ function AppContent() { return ; } +const remoteProxy = Boolean(import.meta.env.VITE_REMOTE_API); + export default function App() { return ( diff --git a/package.json b/package.json index 3b6e4272e6..e8aaa13381 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "dev:web": "turbo dev --filter=@multica/web", "dev:desktop": "turbo dev --filter=@multica/desktop", + "dev:desktop:remote": "pnpm --filter @multica/desktop dev:remote", "build": "turbo build", "typecheck": "turbo typecheck", "test": "turbo test",