From 3576d0b512d4962c6bad0d574fd1bc1800e01295 Mon Sep 17 00:00:00 2001
From: Vben <anncwb@126.com>
Date: 星期一, 05 四月 2021 22:23:39 +0800
Subject: [PATCH] chore: format code

---
 vite.config.ts |   80 ++++++++++++++++++++++++---------------
 1 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/vite.config.ts b/vite.config.ts
index 42dc598..d7200be 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,93 +1,111 @@
 import type { UserConfig, ConfigEnv } from 'vite';
-import { resolve } from 'path';
-import vue from '@vitejs/plugin-vue';
-import vueJsx from '@vitejs/plugin-vue-jsx';
-import legacy from '@vitejs/plugin-legacy';
 
 import { loadEnv } from 'vite';
+import { resolve } from 'path';
 
-import { modifyVars } from './build/config/lessModifyVars';
+import { generateModifyVars } from './build/config/themeConfig';
 import { createProxy } from './build/vite/proxy';
-
 import { wrapperEnv } from './build/utils';
-
 import { createVitePlugins } from './build/vite/plugin';
-
-const pkg = require('./package.json');
+import { OUTPUT_DIR } from './build/constant';
+import pkg from './package.json';
+import moment from 'moment';
 
 function pathResolve(dir: string) {
-  return resolve(__dirname, '.', dir);
+  return resolve(process.cwd(), '.', dir);
 }
 
-const root: string = process.cwd();
+const { dependencies, devDependencies, name, version } = pkg;
+const __APP_INFO__ = {
+  pkg: { dependencies, devDependencies, name, version },
+  lastBuildTime: moment().format('YYYY-MM-DD HH:mm:ss'),
+};
 
 export default ({ command, mode }: ConfigEnv): UserConfig => {
+  const root = process.cwd();
+
   const env = loadEnv(mode, root);
+
+  // The boolean type read by loadEnv is a string. This function can be converted to boolean type
   const viteEnv = wrapperEnv(env);
-  const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE, VITE_LEGACY } = viteEnv;
+
+  const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY, VITE_DROP_CONSOLE } = viteEnv;
 
   const isBuild = command === 'build';
 
   return {
     base: VITE_PUBLIC_PATH,
     root,
-    alias: {
-      '/@/': `${pathResolve('src')}/`,
+    resolve: {
+      alias: [
+        // /@/xxxx => src/xxxx
+        {
+          find: /\/@\//,
+          replacement: pathResolve('src') + '/',
+        },
+        // /#/xxxx => types/xxxx
+        {
+          find: /\/#\//,
+          replacement: pathResolve('types') + '/',
+        },
+        // ['@vue/compiler-sfc', '@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js'],
+      ],
     },
     server: {
       port: VITE_PORT,
+      // Load proxy configuration from .env
       proxy: createProxy(VITE_PROXY),
-      hmr: {
-        overlay: true,
-      },
     },
     build: {
-      polyfillDynamicImport: VITE_LEGACY,
+      target: 'es2015',
+      outDir: OUTPUT_DIR,
       terserOptions: {
         compress: {
           keep_infinity: true,
+          // Used to delete console in production environment
           drop_console: VITE_DROP_CONSOLE,
         },
       },
+      // Turning off brotliSize display can slightly reduce packaging time
+      brotliSize: false,
+      chunkSizeWarningLimit: 1200,
     },
     define: {
-      __VERSION__: pkg.version,
       // setting vue-i18-next
       // Suppress warning
       __VUE_I18N_LEGACY_API__: false,
       __VUE_I18N_FULL_INSTALL__: false,
       __INTLIFY_PROD_DEVTOOLS__: false,
+
+      __APP_INFO__: JSON.stringify(__APP_INFO__),
     },
     css: {
       preprocessorOptions: {
         less: {
           modifyVars: {
+            // Used for global import to avoid the need to import each style file separately
             // reference:  Avoid repeated references
             hack: `true; @import (reference) "${resolve('src/design/config.less')}";`,
-            ...modifyVars,
+            ...generateModifyVars(),
           },
           javascriptEnabled: true,
         },
       },
     },
 
-    plugins: [
-      vue(),
-      vueJsx(),
-      ...(VITE_LEGACY && isBuild ? [legacy()] : []),
-      ...createVitePlugins(viteEnv, isBuild, mode),
-    ],
+    // The vite plugin used by the project. The quantity is large, so it is separately extracted and managed
+    plugins: createVitePlugins(viteEnv, isBuild),
 
     optimizeDeps: {
+      // @iconify/iconify: The dependency is dynamically and virtually loaded by @purge-icons/generated, so it needs to be specified explicitly
       include: [
-        'moment',
-        '@ant-design/icons-vue',
-        'echarts/map/js/china',
+        '@iconify/iconify',
         'ant-design-vue/es/locale/zh_CN',
-        'moment/locale/zh-cn',
+        'moment/dist/locale/zh-cn',
         'ant-design-vue/es/locale/en_US',
-        'resize-observer-polyfill',
+        'moment/dist/locale/eu',
       ],
+      exclude: ['vue-demi'],
     },
   };
 };

--
Gitblit v1.8.0