import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import dotenv from "dotenv"; import { loadAppConfig } from "./vite.config.utils.mts"; import path from "path"; import { fileURLToPath } from 'url'; // Load environment variables dotenv.config(); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export async function createBuildConfig(mode: string) { const appConfig = await loadAppConfig(); const isElectron = mode === "electron"; const isCapacitor = mode === "capacitor"; const isPyWebView = mode === "pywebview"; if (isElectron || isPyWebView || isCapacitor) { process.env.VITE_PWA_ENABLED = 'false'; } return { base: isElectron || isPyWebView ? "./" : "/", plugins: [vue()], server: { port: parseInt(process.env.VITE_PORT || "8080"), fs: { strict: false }, }, build: { outDir: isElectron ? "dist-electron" : "dist", assetsDir: 'assets', chunkSizeWarningLimit: 1000 }, define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.VITE_PWA_ENABLED': JSON.stringify(!(isElectron || isPyWebView || isCapacitor)), __dirname: isElectron ? JSON.stringify(process.cwd()) : '""', }, resolve: { alias: appConfig.aliasConfig }, optimizeDeps: { exclude: isElectron ? [ 'register-service-worker', 'workbox-window', 'web-push', 'serviceworker-webpack-plugin' ] : [] } }; } export default defineConfig(async () => createBuildConfig('web'));