import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import { fileURLToPath, URL } from 'node:url';

// 开发态一律走 Vite 同源代理：前端只请求相对路径 /api/**，
// 由 dev server 转发到 VITE_API_TARGET 指向的后端。
// 这样浏览器侧不存在跨域，也不会因为「访问 dev server 用的主机名/协议」
// 与「后端绝对地址」不一致而出现 Failed to fetch。
export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd(), '');
  // 代理目标：优先 VITE_API_TARGET，兼容旧的 VITE_API_BASE，默认本机后端。
  const target = env.VITE_API_TARGET || env.VITE_API_BASE || 'http://localhost:8080';
  // 启动时打印，便于确认请求究竟被转发到哪台后端。
  console.log(`[vite] /api  ->  ${target}`);

  return {
    plugins: [vue()],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
      },
    },
    server: {
      host: true,
      port: 5180,
      proxy: {
        '/api': {
          target,
          changeOrigin: true,
          secure: false,
        },
      },
    },
  };
});
