From d4dda4a64d18ad3fed9b9591cbacde119264b8a2 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sun, 18 Dec 2022 18:50:21 +0100
Subject: [PATCH] Add manual chunking for libraries and AlekSIS apps

---
 aleksis/core/vite.config.js | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/aleksis/core/vite.config.js b/aleksis/core/vite.config.js
index 2da114abc..12a7bcc5b 100644
--- a/aleksis/core/vite.config.js
+++ b/aleksis/core/vite.config.js
@@ -31,6 +31,28 @@ export default defineConfig({
     manifest: true,
     rollupOptions: {
       input: django_values.coreEntrypoint,
+      output: {
+        manualChunks(id) {
+          // Split big libraries into own chunks
+          if (id.includes("node_modules/vue")) {
+            return "vue";
+          } else if (id.includes("node_modules/apollo")) {
+            return "apollo";
+          } else if (id.includes("node_modules/graphql")) {
+            return "graphql";
+          } else if (id.includes("node_modules")) {
+            // Fallback for all other libraries
+            return "vendor";
+          }
+
+          // Split each AlekSIS app in its own chunk
+          for (const [appPackage, ep] of Object.entries(django_values.appEntrypoints)) {
+            if (id.includes(ep)) {
+              return appPackage;
+            }
+          }
+        },
+      },
     },
   },
   server: {
-- 
GitLab