vite.config.ts
@@ -1,27 +1,38 @@
import { resolve } from "node:path";
import { loadEnv } from "vite";
import { defineConfig } from "./internal/vite-config/src";
/** 公司配置:新增公司只需加一行,logo 图片放 public/logos/ 目录 */
const companyConfigs: Record<string, { favicon: string; logo: string; name: string }> = {
  TEST: { name: '测试公司', logo: '/logos/TEST.png', favicon: '/logos/TEST.ico' },
};
import { companies } from "./company.config";
export default defineConfig(async ({ mode }) => {
  const env = loadEnv(mode, process.cwd(), 'VITE_');
  const companyKey = env.VITE_COMPANY || '';
  const company = companyConfigs[companyKey];
  // deploy.bat 通过 set "VITE_COMPANY=xx" 传入,是进程环境变量,loadEnv 读不到,需优先取 process.env
  const companyKey = process.env.VITE_COMPANY || env.VITE_COMPANY || '';
  const company = companies[companyKey];
  const appLogo = company?.logo ?? '';
  const appFavicon = company?.favicon ?? '';
  console.log('[company]', companyKey, '-> logo:', appLogo, 'favicon:', appFavicon);
  const appApiUrl = company?.apiUrl ?? '';
  const appName = company?.name ?? '';
  const isDev = mode === 'development';
  if (appName) {
    // 覆盖浏览器标签页标题:Vite 的 resolveEnv 优先读 process.env,从而替换 index.html 里的 %VITE_APP_TITLE%
    process.env.VITE_APP_TITLE = appName;
  }
  console.log('[company]', companyKey, '-> name:', appName, 'logo:', appLogo, 'api:', appApiUrl || '(from env)');
  const defineVars: Record<string, string> = {
    __APP_LOGO__: JSON.stringify(appLogo),
    __APP_FAVICON__: JSON.stringify(appFavicon),
    __APP_NAME__: JSON.stringify(appName),
  };
  if (!isDev && appApiUrl) {
    defineVars['import.meta.env.VITE_GLOB_API_URL'] = JSON.stringify(appApiUrl);
    defineVars['import.meta.env.VITE_BASE_URL'] = JSON.stringify(new URL(appApiUrl).origin);
  }
  return {
    application: {},
    vite: {
      define: {
        __APP_LOGO__: JSON.stringify(appLogo),
        __APP_FAVICON__: JSON.stringify(appFavicon),
      },
      define: defineVars,
      resolve: {
        alias: {
          '@vue-office/pdf': resolve(__dirname, 'node_modules/@vue-office/pdf/lib/v3/vue-office-pdf.mjs'),
@@ -71,8 +82,7 @@
        proxy: {
          "/admin-api": {
            changeOrigin: true,
            rewrite: path => path.replace(/^\/admin-api/, ""),
            target: "http://192.168.0.10:48080/admin-api",
            target: "http://192.168.0.10:48080",
            ws: true,
          },
        },