You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
4 days ago
|
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) {
|
||
|
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)),
|
||
|
__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'));
|