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: true, // 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", // 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' } });