import { defineConfig } from "vite"; import laravel from "laravel-vite-plugin"; import path from "path"; export default defineConfig({ server: { host: "0.0.0.0", hmr: { host: "localhost", }, watch: { usePolling: true, }, }, build: { outDir: "public/build", assetsDir: "assets", manifest: "manifest.json", // Optimasi untuk server dengan resource terbatas minify: "terser", chunkSizeWarningLimit: 1000, rollupOptions: { output: { manualChunks: { // Split vendor chunks untuk mengurangi memory usage vendor: ["bootstrap", "moment", "axios"], charts: ["apexcharts"], maps: ["leaflet", "jsvectormap", "gmaps"], ui: ["sweetalert2", "flatpickr", "quill", "dropzone"], forms: ["gridjs", "simplebar"], // Group by functionality to reduce memory usage per chunk dashboards: [ "resources/js/dashboards/bigdata.js", "resources/js/dashboards/pbg.js", "resources/js/dashboards/potentials/inside_system.js", "resources/js/dashboards/potentials/outside_system.js", ], data: [ "resources/js/data/umkm/data-umkm.js", "resources/js/data/tourisms/data-tourisms.js", "resources/js/data/advertisements/data-advertisements.js", ], }, entryFileNames: "assets/[name]-[hash].js", chunkFileNames: "assets/[name]-[hash].js", assetFileNames: "assets/[name]-[hash].[ext]", }, // Optimasi memory - lebih konservatif maxParallelFileOps: 1, }, // Compress assets assetsInlineLimit: 4096, // Reduce memory usage terserOptions: { compress: { drop_console: true, drop_debugger: true, }, }, }, resolve: { alias: { "@": path.resolve(__dirname, "resources/js"), }, }, plugins: [ laravel({ input: [ //css "resources/scss/icons.scss", "resources/scss/style.scss", "resources/scss/components/_circle.scss", "resources/scss/dashboards/_bigdata.scss", "resources/scss/dashboards/_lack-of-potential.scss", "resources/scss/components/_custom_circle.scss", "resources/scss/dashboards/potentials/_inside_system.scss", "resources/scss/dashboards/potentials/_outside_system.scss", "resources/scss/pages/quick-search/detail.scss", "resources/scss/pages/quick-search/index.scss", "resources/scss/pages/quick-search/result.scss", "node_modules/quill/dist/quill.snow.css", "node_modules/quill/dist/quill.bubble.css", "node_modules/flatpickr/dist/flatpickr.min.css", "node_modules/flatpickr/dist/themes/dark.css", "node_modules/gridjs/dist/theme/mermaid.css", "node_modules/flatpickr/dist/themes/dark.css", "node_modules/gridjs/dist/theme/mermaid.min.css", //js "resources/js/app.js", "resources/js/config.js", "resources/js/pages/dashboard.js", "resources/js/pages/chart.js", "resources/js/pages/form-quilljs.js", "resources/js/pages/form-fileupload.js", "resources/js/pages/form-flatepicker.js", "resources/js/pages/table-gridjs.js", "resources/js/pages/maps-google.js", "resources/js/pages/maps-vector.js", "resources/js/pages/maps-spain.js", "resources/js/pages/maps-russia.js", "resources/js/pages/maps-iraq.js", "resources/js/pages/maps-canada.js", "resources/js/data/advertisements/data-advertisements.js", "resources/js/data/advertisements/form-create-update.js", "resources/js/data/advertisements/form-upload.js", //js-additional "resources/js/settings/syncronize/syncronize.js", "resources/js/settings/general/general-settings.js", "resources/js/tables/common-table.js", // dashboards "resources/js/dashboards/bigdata.js", "resources/js/dashboards/potentials/inside_system.js", "resources/js/dashboards/potentials/outside_system.js", "resources/js/dashboards/leader.js", // roles "resources/js/roles/index.js", "resources/js/roles/create.js", "resources/js/roles/update.js", "resources/js/roles/role_menu.js", // users "resources/js/master/users/users.js", "resources/js/master/users/create.js", "resources/js/master/users/update.js", // menus "resources/js/menus/index.js", "resources/js/menus/create.js", "resources/js/menus/update.js", //data-settings "resources/js/data-settings/index.js", "resources/js/data-settings/create.js", "resources/js/data-settings/update.js", // business-industries "resources/js/business-industries/create.js", "resources/js/business-industries/update.js", "resources/js/business-industries/index.js", // umkm "resources/js/data/umkm/data-umkm.js", "resources/js/data/umkm/form-upload.js", "resources/js/data/umkm/form-create-update.js", // tourisms "resources/js/data/tourisms/data-tourisms.js", "resources/js/data/tourisms/form-create-update.js", "resources/js/data/tourisms/form-upload.js", "resources/js/report/tourisms/index.js", // spatial-plannings "resources/js/data/spatialPlannings/data-spatialPlannings.js", "resources/js/data/spatialPlannings/form-create-update.js", "resources/js/data/spatialPlannings/form-upload.js", // customers "resources/js/customers/upload.js", "resources/js/customers/index.js", "resources/js/customers/create.js", "resources/js/customers/edit.js", "resources/js/dashboards/pbg.js", // maps "resources/js/maps/maps-kml.js", // laporan pimpinan "resources/js/bigdata-resumes/index.js", "resources/js/chatbot/index.js", "resources/js/chatbot-pimpinan/index.js", //pbg-task "resources/js/pbg-task/index.js", "resources/js/pbg-task/show.js", "resources/js/pbg-task/create.js", // google-sheets "resources/js/data/google-sheet/index.js", // quick-search "resources/js/quick-search/index.js", "resources/js/quick-search/result.js", "resources/js/quick-search/detail.js", // growth-report "resources/js/report/growth-report/index.js", // dummy "resources/js/approval/index.js", "resources/js/invitations/index.js", "resources/js/payment-recaps/index.js", "resources/js/report-pbg-ptsp/index.js", "resources/js/tpa-tpt/index.js", "resources/js/report-payment-recaps/index.js", ], refresh: true, }), ], // Limit memory usage esbuild: { target: "es2015", }, });