Files
asset-management-system/vite.config.js
Arya Dwi Putra 5514f7de5b first commit
2025-12-01 06:41:22 +07:00

224 lines
9.7 KiB
JavaScript

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import tailwindcss from '@tailwindcss/vite';
import { viteStaticCopy } from 'vite-plugin-static-copy';
import * as packages from './package.json';
import fsExtra from 'fs-extra'; // Import fs-extra as a default import
import { join } from 'path';
export default defineConfig({
plugins: [
laravel({
input: [
'resources/css/app.css',
'resources/sass/app.scss',
'resources/js/app.js',
// Resources assets js file paths
'resources/assets/js/add-products',
'resources/assets/js/alerts',
'resources/assets/js/analytics-dashboard',
'resources/assets/js/apexcharts-area',
'resources/assets/js/apexcharts-bar',
'resources/assets/js/apexcharts-boxplot',
'resources/assets/js/apexcharts-bubble',
'resources/assets/js/apexcharts-candlestick',
'resources/assets/js/apexcharts-column',
'resources/assets/js/apexcharts-dayjs',
'resources/assets/js/apexcharts-funnel',
'resources/assets/js/apexcharts-heatmap',
'resources/assets/js/apexcharts-line',
'resources/assets/js/apexcharts-mixed',
'resources/assets/js/apexcharts-pie',
'resources/assets/js/apexcharts-polararea',
'resources/assets/js/apexcharts-radar',
'resources/assets/js/apexcharts-radialbar',
'resources/assets/js/apexcharts-rangearea',
'resources/assets/js/apexcharts-scatter',
'resources/assets/js/apexcharts-timeline',
'resources/assets/js/apexcharts-treemap',
'resources/assets/js/authentication-main',
'resources/assets/js/blog-create',
'resources/assets/js/blog-details',
'resources/assets/js/canada',
'resources/assets/js/chartjs-charts',
'resources/assets/js/chat',
'resources/assets/js/choices',
'resources/assets/js/color-picker',
'resources/assets/js/coming-soon',
'resources/assets/js/courses-dashboard',
'resources/assets/js/create-invoice',
'resources/assets/js/create-project',
'resources/assets/js/crm-companies',
'resources/assets/js/crm-contacts',
'resources/assets/js/crm-dashboard',
'resources/assets/js/crm-deals',
'resources/assets/js/crm-leads',
'resources/assets/js/crypto-buy_sell',
'resources/assets/js/crypto-currency-exchange',
'resources/assets/js/crypto-dashboard',
'resources/assets/js/crypto-marketcap',
'resources/assets/js/custom-switcher',
'resources/assets/js/custom',
'resources/assets/js/customers-list',
'resources/assets/js/datatables',
'resources/assets/js/date&time_pickers',
'resources/assets/js/defaultmenu',
'resources/assets/js/draggable-cards',
'resources/assets/js/echarts',
'resources/assets/js/ecommerce-dashboard',
'resources/assets/js/file-manager',
'resources/assets/js/fileupload',
'resources/assets/js/form-advanced',
'resources/assets/js/form-input-mask',
'resources/assets/js/form-wizard-init',
'resources/assets/js/fullcalendar',
'resources/assets/js/gallery',
'resources/assets/js/google-maps',
'resources/assets/js/grid',
'resources/assets/js/hrm-dashboard',
'resources/assets/js/invoice-list',
'resources/assets/js/job-candidate-details',
'resources/assets/js/job-details',
'resources/assets/js/job-list',
'resources/assets/js/job-search-candidate',
'resources/assets/js/job-search',
'resources/assets/js/jobs-dashboard',
'resources/assets/js/jobs-post',
'resources/assets/js/jsvectormap',
'resources/assets/js/landing',
'resources/assets/js/leaflet',
'resources/assets/js/mail-settings',
'resources/assets/js/mail',
'resources/assets/js/main',
'resources/assets/js/media-player',
'resources/assets/js/medical-dashboard',
'resources/assets/js/modal',
'resources/assets/js/nft-create',
'resources/assets/js/nft-dashboard',
'resources/assets/js/nft-details',
'resources/assets/js/nouislider',
'resources/assets/js/orders',
'resources/assets/js/pos-dashboard',
'resources/assets/js/prism-custom',
'resources/assets/js/product-details',
'resources/assets/js/products',
'resources/assets/js/profile',
'resources/assets/js/project-overview',
'resources/assets/js/projects-dashboard',
'resources/assets/js/quill-editor',
'resources/assets/js/ratings',
'resources/assets/js/reviews',
'resources/assets/js/russia',
'resources/assets/js/sales-dashboard',
'resources/assets/js/school-dashboard',
'resources/assets/js/search-results',
'resources/assets/js/select2',
'resources/assets/js/simplebar',
'resources/assets/js/social-media-dashboard',
'resources/assets/js/sortable',
'resources/assets/js/spain',
'resources/assets/js/sticky',
'resources/assets/js/stocks-dashboard',
'resources/assets/js/sweet-alerts',
'resources/assets/js/swiper',
'resources/assets/js/tagify',
'resources/assets/js/task-kanban-board',
'resources/assets/js/task-list',
'resources/assets/js/team',
'resources/assets/js/toasts',
'resources/assets/js/todolist',
'resources/assets/js/tour',
'resources/assets/js/us-merc-en',
'resources/assets/js/validation',
'resources/assets/js/widgets',
],
refresh: true,
}),
tailwindcss(),
viteStaticCopy({
targets: [
{
src: ([
'resources/assets/images/',
'resources/assets/audio/',
'resources/assets/video/',
'resources/assets/icon-fonts/',
'resources/assets/js/main.js',
'resources/assets/js/sticky.js',
'resources/assets/js/chat.js',
'resources/assets/js/show-password.js',
'resources/assets/js/coming-soon.js',
'resources/assets/js/two-step-verification.js',
'resources/assets/js/authentication-main.js',
'resources/assets/js/apex-github-data.js',
'resources/assets/js/apexcharts-candlestick-seriesdata.js',
'resources/assets/js/apexcharts-irregulardata.js',
'resources/assets/js/apexcharts-stock-prices.js',
'resources/assets/js/apexcharts-dayjs.js',
'resources/assets/js/dataseries.js',
'resources/assets/js/form-wizard.js',
]),
dest: 'assets/'
}
]
}),
{
// Use a custom plugin for copying distribution files
name: 'copy-dist-files',
writeBundle: async () => {
const destDir = 'public/build/assets/libs'; // Update the destination directory
for (const dep of Object.keys(packages.dependencies)) {
const srcPath = join('node_modules', dep, 'dist');
const destPath = join(destDir, dep);
// Check if the 'dist' directory exists for the dependency
if (await fsExtra.pathExists(srcPath)) {
// Copy the distribution files (contents of 'dist') to the destination directory
await fsExtra.copy(srcPath, destPath, {
overwrite: true,
recursive: true,
});
// Remove the 'dist' directory from the destination
await fsExtra.remove(join(destPath, 'dist'));
} else {
// If 'dist' folder doesn't exist, check if the package itself exists and copy it.
const packageSrcPath = join('node_modules', dep);
const packageDestPath = join(destDir, dep);
if (await fsExtra.pathExists(packageSrcPath)) {
await fsExtra.copy(packageSrcPath, packageDestPath, {
overwrite: true,
recursive: true,
});
}
}
}
},
},
{
name: 'blade',
handleHotUpdate({ file, server }) {
if (file.endsWith('.blade.php')) {
server.ws.send({
type: 'full-reload',
path: '*',
});
}
},
}
],
build: {
chunkSizeWarningLimit: 1600,
outDir: 'public/build',
emptyOutDir: true,
},
});