vite.config.ts 1.4 KB

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