import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import html from '@rollup/plugin-html'; import { viteStaticCopy } from 'vite-plugin-static-copy' import { glob } from 'glob'; /** * Get Files from a directory * @param {string} query * @returns array */ function GetFilesArray(query) { return glob.sync(query); } /** * Js Files */ // Ppp JS Files const appJsFiles = GetFilesArray('resources/js/*.js'); // Page JS Files const pageJsFiles = GetFilesArray('resources/assets/js/*.js'); // Processing Vendor JS Files const vendorJsFiles = GetFilesArray('resources/assets/vendor/js/*.js'); // Processing Libs JS Files const LibsJsFiles = GetFilesArray('resources/assets/vendor/libs/**/*.js'); /** * Scss Files */ // Processing Core, Themes & Pages Scss Files const CoreScssFiles = GetFilesArray('resources/assets/vendor/scss/**/!(_)*.scss'); // Processing Libs Scss & Css Files const LibsScssFiles = GetFilesArray('resources/assets/vendor/libs/**/!(_)*.scss'); const LibsCssFiles = GetFilesArray('resources/assets/vendor/libs/**/*.css'); const FaCssFiles = GetFilesArray('resources/fontawesome/scss/!(_)*.scss'); // Processing Fonts Scss Files const FontsScssFiles = GetFilesArray('resources/assets/vendor/fonts/**/!(_)*.scss'); const ImageFiles = GetFilesArray('resources/imgs/**/*.*'); const CustImageFiles = GetFilesArray('resources/assets/img/customizer/*.*'); const AvImageFiles = GetFilesArray('resources/assets/img/avatars/*.*'); // Processing Window Assignment for Libs like jKanban, pdfMake function libsWindowAssignment() { return { name: 'libsWindowAssignment', transform(src, id) { if (id.includes('jkanban.js')) { return src.replace('this.jKanban', 'window.jKanban'); } else if (id.includes('vfs_fonts')) { return src.replaceAll('this.pdfMake', 'window.pdfMake'); } } }; } export default defineConfig({ plugins: [ laravel({ input: [ 'resources/css/app.css', 'resources/assets/css/demo.css', //'resources/js/app.js', ...appJsFiles, ...pageJsFiles, ...vendorJsFiles, ...LibsJsFiles, 'resources/js/laravel-user-management.js', // Processing Laravel User Management CRUD JS File ...CoreScssFiles, ...LibsScssFiles, ...LibsCssFiles, ...FaCssFiles, ...FontsScssFiles ], refresh: true }), viteStaticCopy({ targets: [ { src: [...ImageFiles], dest: '../imgs' }, { src: [...CustImageFiles], dest: '../assets/img/customizer' }, { src: [...AvImageFiles], dest: '../assets/img/avatars' } ] }), html(), libsWindowAssignment() ] });