import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve, dirname } from 'path'
import { fileURLToPath } from 'url'

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

export default defineConfig(({ mode }) => ({
  // 开发和生产环境都通过nginx代理访问/bidding
  base: '/bidding/',
  
  plugins: [
    vue({
      script: {
        defineModel: true,
        propsDestructure: true
      }
    }),
    vueJsx()
  ],
  
  define: {
    __VUE_OPTIONS_API__: true,
    __VUE_PROD_DEVTOOLS__: true,
    __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: true
  },
  
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src')
    }
  },
  
  server: {
    port: 7002,
    host: true,
    cors: true,
    open: '/bidding/',  // 开发时自动打开到 /bidding/ 路径
    proxy: {
      '/api': {
        target: 'http://localhost:8180',
        changeOrigin: true,
        rewrite: (path: string) => path.replace(/^\/api/, '')
      },
      // 代理共享模块请求到 shared 服务
      '/shared': {
        target: 'http://localhost:7000',
        changeOrigin: true
      }
    }
  },
  
  build: {
    outDir: 'dist',
    sourcemap: true,
    rollupOptions: {
      output: {
        manualChunks: {
          'vue-vendor': ['vue', 'vue-router', 'pinia'],
          'element-plus': ['element-plus']
        }
      }
    }
  }
}))
