import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import path from "path"; import { createRequire } from 'module'; const require = createRequire(import.meta.url); const prerender = require('vite-plugin-prerender'); export default defineConfig(({ mode }) => { console.log(`🔨 Vite build mode: ${mode}`); return { plugins: [ vue(), prerender({ // REQUIRED: The path to the built app to prerender. staticDir: path.join(__dirname, 'dist'), // The routes to render. routes: [ '/', '/en/', '/me/', '/ru/', '/ua/', '/en/portfolio', '/me/portfolio', '/ru/portfolio', '/ua/portfolio', '/en/about', '/me/about', '/ru/about', '/ua/about', '/en/contact', '/me/contact', '/ru/contact', '/ua/contact' ], renderer: new prerender.PuppeteerRenderer({ renderAfterTime: 5000, injectProperty: '__PRERENDER_INJECTED', headless: true, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', // Useful for resource-constrained environments '--single-process' ] }) }) ], resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, build: { outDir: 'dist', chunkSizeWarningLimit: 1000, cssMinify: true, minify: 'esbuild', rollupOptions: { output: { manualChunks: { 'three-vendor': ['three'], 'ui-vendor': ['lucide-vue-next', '@vueuse/core'], } } } }, esbuild: { legalComments: 'none', target: 'esnext', }, test: { globals: true, environment: "jsdom", }, }; });