import { defineConfig } from 'vite';
import { resolve } from 'node:path';
import vue from '@vitejs/plugin-vue';

export default defineConfig(({ mode }) => ({
  base: '/static/dist/',
  plugins: [vue()],
  publicDir: false,
  build: {
    outDir: '../src/mes_dashboard/static/dist',
    emptyOutDir: false,
    sourcemap: mode !== 'production',
    rollupOptions: {
      input: {
        portal: resolve(__dirname, 'src/portal/main.js'),
        'portal-shell': resolve(__dirname, 'src/portal-shell/index.html'),
        'wip-overview': resolve(__dirname, 'src/wip-overview/index.html'),
        'wip-detail': resolve(__dirname, 'src/wip-detail/index.html'),
        'hold-detail': resolve(__dirname, 'src/hold-detail/index.html'),
        'hold-overview': resolve(__dirname, 'src/hold-overview/index.html'),
        'hold-history': resolve(__dirname, 'src/hold-history/index.html'),
        'resource-status': resolve(__dirname, 'src/resource-status/index.html'),
        'resource-history': resolve(__dirname, 'src/resource-history/index.html'),
        'job-query': resolve(__dirname, 'src/job-query/main.js'),
        'excel-query': resolve(__dirname, 'src/excel-query/main.js'),
        tables: resolve(__dirname, 'src/tables/index.html'),
        'query-tool': resolve(__dirname, 'src/query-tool/main.js'),
        'tmtt-defect': resolve(__dirname, 'src/tmtt-defect/main.js'),
        'qc-gate': resolve(__dirname, 'src/qc-gate/index.html'),
        'mid-section-defect': resolve(__dirname, 'src/mid-section-defect/index.html')
      },
      output: {
        entryFileNames: '[name].js',
        chunkFileNames: 'chunks/[name]-[hash].js',
        assetFileNames: '[name][extname]',
        manualChunks(id) {
          const normalizedId = id.replace(/\\/g, '/');
          if (!normalizedId.includes('node_modules')) {
            return;
          }
          if (
            normalizedId.includes('/node_modules/echarts/') ||
            normalizedId.includes('/node_modules/zrender/') ||
            normalizedId.includes('/node_modules/vue-echarts/')
          ) {
            return 'vendor-echarts';
          }
          if (
            normalizedId.includes('/node_modules/vue/') ||
            normalizedId.includes('/node_modules/@vue/')
          ) {
            return 'vendor-vue';
          }
          return 'vendor';
        }
      }
    }
  }
}));
