| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | import vue from '@vitejs/plugin-vue';import { resolve } from 'path';import { ConfigEnv, defineConfig, loadEnv } from 'vite';import vueJsx from '@vitejs/plugin-vue-jsx';import compression from 'vite-plugin-compression';import AutoImport from 'unplugin-auto-import/vite'import Components from 'unplugin-vue-components/vite'import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'const pathResolve = (dir: string) => {  return resolve(__dirname, '.', dir);};const alias: Record<string, string> = {  '/@': pathResolve('./src/'),  '@views': pathResolve('./src/views'),  'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',  '@dvaformflow': pathResolve('./src/viwes/plugins/dvaadmin_form_flow/src/')};const viteConfig = defineConfig((mode: ConfigEnv) => {  const env = loadEnv(mode.mode, process.cwd());  return {    plugins: [      vue(),      vueJsx(),      // vueSetupExtend()      AutoImport({        imports: [          'vue',          'vue-router',          'pinia',          {            'dayjs': [              // 默认导入              ['default', 'dayjs']            ],            // '/@/utils/useTableData': [            //   'useTableData'            // ],            // '/@/utils/usePagination': [            //   'usePagination'            // ],            // '/@/utils/useResponse': [            //   'useResponse'            // ]          },        ],        resolvers: [ElementPlusResolver()],        dts: 'src/auto-imports.d.ts', // 生成 TypeScript 声明文件      }),      Components({        // resolvers: [ElementPlusResolver()],      }),      compression({        algorithm: 'gzip', // 使用 gzip 压缩        ext: '.gz', // 输出的文件扩展名        threshold: 10240, // 只有大小大于该值的资源会被压缩(默认 10KB)        deleteOriginFile: false, // 是否删除原始未压缩的文件      }),      lazyImport({        resolvers: [          VxeResolver({            libraryName: 'vxe-table'          }),          VxeResolver({            libraryName: 'vxe-pc-ui'          })        ]      })    ],    root: process.cwd(),    resolve: { alias },    base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,    optimizeDeps: {      include: [ 'element-plus/es/locale/lang/zh-cn', 'element-plus/es/locale/lang/en', 'element-plus/es/locale/lang/zh-tw' ]    },    server: {      host: '0.0.0.0',      port: env.VITE_PORT as unknown as number,      open: false,      hmr: true,      proxy: {        '/gitee': {          target: 'https://gitee.com',          ws: true,          changeOrigin: true,          rewrite: (path) => path.replace(/^\/gitee/, '')        }      }    },    build: {      outDir: env.VITE_DIST_PATH || 'dist',      chunkSizeWarningLimit: 1500,      rollupOptions: {        output: {          entryFileNames: `assets/[name].[hash].js`,          chunkFileNames: `assets/[name].[hash].js`,          assetFileNames: `assets/[name].[hash].[ext]`,          compact: true,          manualChunks: {            vue: [ 'vue', 'vue-router', 'pinia' ],            echarts: [ 'echarts' ],            elementPlus: ['element-plus'],          }          // manualChunks(id) {          //   if (id.includes('node_modules')) {          //     return 'vendor';          //   }          // }        }      }    },    css: {       preprocessorOptions: {         css: { charset: false },        scss: { api: 'modern-compiler' },      }     },    define: {      __VUE_I18N_LEGACY_API__: JSON.stringify(false),      __VUE_I18N_FULL_INSTALL__: JSON.stringify(false),      __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),      __VERSION__: JSON.stringify(process.env.npm_package_version)    }  };});export default viteConfig;
 |