2026-08-03 8c99ae416c5277e737e950ce7702776d7c9b6430
Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0
已修改7个文件
已添加2个文件
55 ■■■■ 文件已修改
.env.production 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company.config.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
deploy.bat 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/logos/TEST.ico 补丁 | 查看 | 原始文档 | blame | 历史
src/layouts/auth.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/preferences.ts 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/types/app.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.ts 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production
@@ -1,3 +1,5 @@
VITE_COMPANY=TEST
VITE_BASE=/
# è¯·æ±‚路径
company.config.ts
@@ -3,15 +3,17 @@
  name: string;
  /** logo å›¾ç‰‡è·¯å¾„,相对于 public ç›®å½• */
  logo: string;
  /** ç½‘页标题图标路径,相对于 public ç›®å½• */
  favicon: string;
}
/**
 * æ‰€æœ‰å…¬å¸é…ç½®
 * æ–°å¢žå…¬å¸åªéœ€åœ¨ä¸‹é¢åŠ ä¸€è¡Œå³å¯
 *
 * æ‰“包:记得在在deploy.bat文件中将set "COMPANY=TEST"改名字
 * æ‰“包命令:deploy.bat ä¸­ä¿®æ”¹ set "COMPANY=公司key"
 * ç¤ºä¾‹ï¼šset "COMPANY=TEST"
 */
export const companies: Record<string, CompanyConfig> = {
  TEST: { name: '测试公司', logo: '/logos/TEST.png' },
  TEST: { name: '测试公司', logo: '/logos/TEST.png', favicon: '/logos/TEST.ico' },
};
deploy.bat
@@ -95,7 +95,7 @@
echo [STEP 1/3] Building project for %COMPANY%...
echo [INFO] Running: pnpm run build
echo.
set COMPANY=%COMPANY% && call pnpm run build
set "COMPANY=!COMPANY!" && call pnpm run build
if !errorlevel! neq 0 (
    echo [ERROR] Build failed! Check your project configuration.
    goto :error_exit
public/logos/TEST.ico
src/layouts/auth.vue
@@ -6,8 +6,10 @@
import { $t } from '#/locales';
declare const __APP_LOGO__: string;
const appName = computed(() => preferences.app.name);
const logo = computed(() => preferences.logo.source);
const logo = computed(() => __APP_LOGO__ || preferences.logo.source);
const logoDark = computed(() => preferences.logo.sourceDark);
</script>
src/main.ts
@@ -1,7 +1,10 @@
import { initPreferences } from './packages/preferences/src';
import { initPreferences, preferencesManager } from './packages/preferences/src';
import { unmountGlobalLoading } from './packages/utils/src';
import { overridesPreferences, preferencesExtension } from './preferences';
declare const __APP_LOGO__: string;
declare const __APP_FAVICON__: string;
/**
 * åº”用初始化完成之后再进行页面加载渲染
@@ -20,6 +23,17 @@
    overrides: overridesPreferences,
  });
  // å¼ºåˆ¶è¦†ç›–公司 logo å’Œ favicon,绕过 localStorage ç¼“å­˜
  if (__APP_LOGO__) {
    preferencesManager.updatePreferences({ logo: { source: __APP_LOGO__ } });
  }
  if (__APP_FAVICON__) {
    const link = document.querySelector('link[rel="icon"]');
    if (link) {
      link.setAttribute('href', __APP_FAVICON__);
    }
  }
  // å¯åŠ¨åº”ç”¨å¹¶æŒ‚è½½
  // vue应用主要逻辑及视图
  const { bootstrap } = await import('./bootstrap');
src/preferences.ts
@@ -3,6 +3,8 @@
  definePreferencesExtension,
} from './packages/preferences/src';
declare const __APP_LOGO__: string;
interface WebAntdPreferencesExtension {
  defaultTableSize: number;
  enableFormFullscreen: boolean;
@@ -33,7 +35,7 @@
    companySiteLink: 'https://gitee.com/yudaocode/yudao-ui-admin-vben',
  },
  logo: {
    source: import.meta.env.VITE_APP_LOGO || undefined,
    source: __APP_LOGO__ || undefined,
  },
  tabbar: {
    /** åˆ·æ–°æµè§ˆå™¨åŽåªä¿ç•™å½“前页面,不持久化所有标签页 */
src/types/app.d.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
declare const __APP_LOGO__: string;
declare const __APP_FAVICON__: string;
vite.config.ts
@@ -1,15 +1,26 @@
import { resolve } from "node:path";
import { loadEnv } from "vite";
import { defineConfig } from "./internal/vite-config/src";
import { companies } from "./company.config";
const appLogo = process.env.COMPANY ? companies[process.env.COMPANY]?.logo : undefined;
/** å…¬å¸é…ç½®ï¼šæ–°å¢žå…¬å¸åªéœ€åŠ ä¸€è¡Œï¼Œlogo å›¾ç‰‡æ”¾ public/logos/ ç›®å½• */
const companyConfigs: Record<string, { favicon: string; logo: string; name: string }> = {
  TEST: { name: '测试公司', logo: '/logos/TEST.png', favicon: '/logos/TEST.ico' },
};
export default defineConfig(async () => {
export default defineConfig(async ({ mode }) => {
  const env = loadEnv(mode, process.cwd(), 'VITE_');
  const companyKey = env.VITE_COMPANY || '';
  const company = companyConfigs[companyKey];
  const appLogo = company?.logo ?? '';
  const appFavicon = company?.favicon ?? '';
  console.log('[company]', companyKey, '-> logo:', appLogo, 'favicon:', appFavicon);
  return {
    application: {},
    vite: {
      define: {
        'import.meta.env.VITE_APP_LOGO': JSON.stringify(appLogo ?? ''),
        __APP_LOGO__: JSON.stringify(appLogo),
        __APP_FAVICON__: JSON.stringify(appFavicon),
      },
      resolve: {
        alias: {