zhengyiming
2025-02-18 251c70f836e4f922904b9131c52f15d5ac58c9fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import { resolve } from 'path';
import { warpperEnv } from './build';
import { getPluginsList } from './build/plugins';
import { UserConfigExport, ConfigEnv, loadEnv, AliasOptions } from 'vite';
 
export const projRoot = resolve(__dirname, '..', '..');
export const pkgRoot = resolve(projRoot, 'packages');
export const coreRoot = resolve(pkgRoot, 'core');
 
// 当前执行node命令时文件夹的地址(工作目录)
const root: string = process.cwd();
 
// 路径查找
const pathResolve = (dir: string): string => {
  return resolve(__dirname, '.', dir);
};
 
// 设置别名
const alias: AliasOptions = [
  {
    find: '@',
    replacement: pathResolve('src'),
  },
  {
    find: '@build',
    replacement: pathResolve('build'),
  },
  {
    find: '@mock',
    replacement: pathResolve('mock'),
  },
  {
    find: '@config',
    replacement: pathResolve('config'),
  },
];
 
export default ({ command, mode }: ConfigEnv): UserConfigExport => {
  const {
    VITE_PORT,
    VITE_LEGACY,
    VITE_PUBLIC_PATH,
    VITE_PROXY_DOMAIN,
    VITE_PROXY_DOMAIN_REAL,
    VITE_COMPRESSION,
    VITE_AppType,
  } = warpperEnv(loadEnv(mode, root));
 
  return {
    base: VITE_PUBLIC_PATH,
    root,
    resolve: {
      alias,
      dedupe: ['vue', 'element-plus'],
    },
    // 服务端渲染
    server: {
      // 是否开启 https
      // https: false,
      // 端口号
      port: VITE_PORT,
      host: '0.0.0.0',
      warmup: {
        clientFiles: ['./index.html', './src/{views,components}/*'],
      },
      // 本地跨域代理
      proxy:
        VITE_PROXY_DOMAIN_REAL.length > 0
          ? {
              [VITE_PROXY_DOMAIN]: {
                target: VITE_PROXY_DOMAIN_REAL,
                // ws: true,
                changeOrigin: true,
                rewrite: (path: string) => {
                  console.log('path: ', path);
                  return path.replace(/^\/api/, '');
                },
              },
              // '/v1': {
              //   target: 'https://apis.map.qq.com/ws/geocoder',
              //   changeOrigin: true,
              // },
              // '/company/1823263644708900864': {
              //   target: 'http://localhost:5000/200100/querycommon',
              //   changeOrigin: true,
              // },
              // '/1823555004544454656': {
              //   target: 'http://localhost:5000/200100/sqlscript',
              //   changeOrigin: true,
              // },
            }
          : {},
    },
    plugins: getPluginsList(command, { VITE_LEGACY, VITE_COMPRESSION, VITE_AppType }),
    define: {
      __INTLIFY_PROD_DEVTOOLS__: false,
    },
    build: {
      outDir: `dist/dist-yexingfront-${VITE_AppType}-${mode}`,
    },
    optimizeDeps: {
      include: [
        'video.js',
        'xlsx-style',
        'jszip',
        '@/../lib/vuedraggable/dist/vuedraggable.umd.js',
        '@tencentcloud/chat-uikit-engine',
        'tuicall-engine-webrtc',
        'semver',
      ],
      exclude: ['@bole-12333/chat-kit', '@bole-12333/customer-chat'],
    },
  };
};