vite.config.mts 1.4 KB
import { defineConfig } from '@vben/vite-config';
import { loadEnv } from 'vite';

// 自行取消注释来启用按需导入功能
// import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
// import Components from 'unplugin-vue-components/vite';

export default defineConfig(async ({ command, mode }) => {
  const env = loadEnv(mode, process.cwd(), '');
  const apiPrefix = (env.VITE_GLOB_API_URL ?? '').replace(/^"|"$/g, '');
  const apiTarget = (env.VITE_APP_URL ?? '').replace(/^"|"$/g, '');
  /** 相对路径(如 /dev-api)→ Vite 代理到 VITE_APP_URL,本地开发规避 CORS */
  const useDevProxy = apiPrefix.startsWith('/') && !!apiTarget;

  const devProxy = useDevProxy
    ? {
        [apiPrefix]: {
          target: apiTarget,
          changeOrigin: true,
          rewrite: (path: string) => path.replace(new RegExp(`^${apiPrefix}`), ''),
          configure: (proxy: { on: (e: string, fn: (...args: unknown[]) => void) => void }) => {
            proxy.on('proxyReq', (_proxyReq, req) => {
              const url = `${apiTarget}${(req.url ?? '').replace(new RegExp(`^${apiPrefix}`), '')}`;
              console.log('[dev-api proxy]', req.method, url);
            });
          },
        },
      }
    : undefined;

  return {
    application: {},
    vite: {
      plugins: [
        // Components({ ... }),
      ],
      server: {
        proxy: devProxy,
      },
    },
  };
});