vite.config.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { defineConfig } from "vite";
  2. import vue from "@vitejs/plugin-vue";
  3. import path from "path";
  4. import prerender from "vite-plugin-prerender";
  5. export default defineConfig(({ mode }) => {
  6. console.log(`🔨 Vite build mode: ${mode}`);
  7. return {
  8. plugins: [
  9. vue(),
  10. prerender({
  11. // REQUIRED: The path to the built app to prerender.
  12. staticDir: path.join(__dirname, 'dist'),
  13. // The routes to render.
  14. routes: [
  15. '/',
  16. '/en/', '/me/', '/ru/', '/ua/',
  17. '/en/portfolio', '/me/portfolio', '/ru/portfolio', '/ua/portfolio',
  18. '/en/about', '/me/about', '/ru/about', '/ua/about',
  19. '/en/contact', '/me/contact', '/ru/contact', '/ua/contact'
  20. ],
  21. renderer: new prerender.PuppeteerRenderer({
  22. renderAfterDocumentEvent: 'render-event',
  23. injectProperty: '__PRERENDER_INJECTED',
  24. inject: {
  25. foo: 'bar'
  26. },
  27. renderAfterTime: 2000,
  28. headless: true,
  29. args: ['--no-sandbox', '--disable-setuid-sandbox']
  30. })
  31. })
  32. ],
  33. resolve: {
  34. alias: {
  35. "@": path.resolve(__dirname, "./src"),
  36. },
  37. },
  38. build: {
  39. outDir: 'dist',
  40. chunkSizeWarningLimit: 1000,
  41. cssMinify: true,
  42. minify: 'esbuild',
  43. rollupOptions: {
  44. output: {
  45. manualChunks: {
  46. 'three-vendor': ['three'],
  47. 'ui-vendor': ['lucide-vue-next', '@vueuse/core'],
  48. }
  49. }
  50. }
  51. },
  52. esbuild: {
  53. legalComments: 'none',
  54. target: 'esnext',
  55. },
  56. test: {
  57. globals: true,
  58. environment: "jsdom",
  59. },
  60. };
  61. });