wenhongquan 3 жил өмнө
parent
commit
e7e3a153e4

+ 8 - 0
.env.dev

@@ -0,0 +1,8 @@
+# .env.dev
+
+NODE_ENV = development
+
+VITE_API_SERVER = 'http://61.147.254.211:30876'
+VITE_MAP_SERVER = 'http://61.147.254.211:21009'
+VITE_LOGIN_SERVER = 'http://61.147.254.211:9999'
+VITE_DH_SERVER = 'http://sqdh.xt.wenhq.top:8083'

+ 8 - 0
.env.prod

@@ -0,0 +1,8 @@
+# .env.prod
+
+NODE_ENV = prod
+
+VITE_API_SERVER = 'http://10.11.208.17:30876'
+VITE_MAP_SERVER = 'http://10.11.208.19:21009'
+VITE_LOGIN_SERVER = 'http://61.147.254.211:9999'
+VITE_DH_SERVER = 'http://10.11.208.12:31000/sqdh'

+ 7 - 7
index.html

@@ -12,14 +12,14 @@
     <!--    <script src="../webClient/webClient_initWnd.js"></script>-->
 
     <!-- <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.g6-3.1.1/build/g6.js"></script> -->
-    <link rel="stylesheet" href="http://61.147.254.211:21009/minemapapi/v2.1.0/minemap.css">
-    <script src="http://61.147.254.211:21009/minemapapi/v2.1.0/minemap.js"></script>
+    <link rel="stylesheet" href="<%- mapurl %>/minemapapi/v2.1.0/minemap.css">
+    <script src="<%- mapurl %>/minemapapi/v2.1.0/minemap.js"></script>
     <script>
-        minemap.domainUrl = 'http://61.147.254.211:21009';
-        minemap.dataDomainUrl = 'http://61.147.254.211:21009';
-        minemap.serverDomainUrl = 'http://61.147.254.211:21009';
-        minemap.spriteUrl = 'http://61.147.254.211:21009/minemapapi/v2.1.0/sprite/sprite';
-        minemap.serviceUrl = 'http://61.147.254.211:21009/service/';
+        minemap.domainUrl = '<%- mapurl %>';
+        minemap.dataDomainUrl = '<%- mapurl %>';
+        minemap.serverDomainUrl = '<%- mapurl %>';
+        minemap.spriteUrl = '<%- mapurl %>/minemapapi/v2.1.0/sprite/sprite';
+        minemap.serviceUrl = '<%- mapurl %>/service/';
 
         /**
          * key、solution设置

+ 62 - 60
package.json

@@ -1,61 +1,63 @@
 {
-  "name": "squi",
-  "version": "0.1.0",
-  "private": true,
-  "scripts": {
-    "dev": "vite serve",
-    "build": "vite build",
-    "lint": "eslint --fix --ext .ts,.tsx,.json src"
-  },
-  "dependencies": {
-    "@element-plus/icons": "^0.0.11",
-    "animate.css": "^4.1.1",
-    "axios": "^0.24.0",
-    "clsx": "^1.1.1",
-    "core-js": "^3.6.5",
-    "crypto-js": "^4.1.1",
-    "echarts": "^5.2.2",
-    "element-plus": "^1.1.0-beta.24",
-    "moment": "^2.29.1",
-    "nprogress": "^0.2.0",
-    "ol": "^6.9.0",
-    "pinia": "^2.0.0",
-    "vue": "^3.0.0",
-    "vue-echarts": "^6.0.0",
-    "vue-router": "^4.0.12",
-    "vuex": "^4.0.0-0"
-  },
-  "devDependencies": {
-    "@rollup/plugin-image": "^2.1.1",
-    "@types/crypto-js": "^4.0.2",
-    "@types/lodash": "^4.14.176",
-    "@types/node": "^16.11.6",
-    "@types/nprogress": "^0.2.0",
-    "@typescript-eslint/eslint-plugin": "^5.2.0",
-    "@typescript-eslint/parser": "^5.2.0",
-    "@vitejs/plugin-vue": "^1.9.3",
-    "@vitejs/plugin-vue-jsx": "^1.2.0",
-    "@vue/babel-plugin-jsx": "^1.1.1",
-    "@vue/compiler-sfc": "^3.0.0",
-    "@vue/eslint-config-prettier": "^6.0.0",
-    "@vue/eslint-config-typescript": "^8.0.0",
-    "babel-eslint": "^10.1.0",
-    "eslint": "^6.7.2",
-    "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-vue": "^7.0.0",
-    "prettier": "^2.4.1",
-    "sass": "^1.27.0",
-    "sass-loader": "^10.0.4",
-    "typescript": "^4.4.4",
-    "unplugin-element-plus": "^0.1.3",
-    "unplugin-vue-components": "^0.16.0",
-    "vite": "^2.6.11",
-    "vite-svg-loader": "^2.2.0",
-    "vue-cli-plugin-element-plus": "~0.0.13"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "not dead"
-  ]
-}
+    "name": "squi",
+    "version": "0.1.0",
+    "private": true,
+    "scripts": {
+        "dev": "vite serve --mode dev",
+        "build": "vite build --mode dev",
+        "prod": "vite build --mode prod",
+        "lint": "eslint --fix --ext .ts,.tsx,.json src"
+    },
+    "dependencies": {
+        "@element-plus/icons": "^0.0.11",
+        "animate.css": "^4.1.1",
+        "axios": "^0.24.0",
+        "clsx": "^1.1.1",
+        "core-js": "^3.6.5",
+        "crypto-js": "^4.1.1",
+        "echarts": "^5.2.2",
+        "element-plus": "^1.1.0-beta.24",
+        "moment": "^2.29.1",
+        "nprogress": "^0.2.0",
+        "ol": "^6.9.0",
+        "pinia": "^2.0.0",
+        "vite-plugin-html": "^3.0.6",
+        "vue": "^3.0.0",
+        "vue-echarts": "^6.0.0",
+        "vue-router": "^4.0.12",
+        "vuex": "^4.0.0-0"
+    },
+    "devDependencies": {
+        "@rollup/plugin-image": "^2.1.1",
+        "@types/crypto-js": "^4.0.2",
+        "@types/lodash": "^4.14.176",
+        "@types/node": "^16.11.6",
+        "@types/nprogress": "^0.2.0",
+        "@typescript-eslint/eslint-plugin": "^5.2.0",
+        "@typescript-eslint/parser": "^5.2.0",
+        "@vitejs/plugin-vue": "^1.9.3",
+        "@vitejs/plugin-vue-jsx": "^1.2.0",
+        "@vue/babel-plugin-jsx": "^1.1.1",
+        "@vue/compiler-sfc": "^3.0.0",
+        "@vue/eslint-config-prettier": "^6.0.0",
+        "@vue/eslint-config-typescript": "^8.0.0",
+        "babel-eslint": "^10.1.0",
+        "eslint": "^6.7.2",
+        "eslint-plugin-prettier": "^4.0.0",
+        "eslint-plugin-vue": "^7.0.0",
+        "prettier": "^2.4.1",
+        "sass": "^1.27.0",
+        "sass-loader": "^10.0.4",
+        "typescript": "^4.4.4",
+        "unplugin-element-plus": "^0.1.3",
+        "unplugin-vue-components": "^0.16.0",
+        "vite": "^2.6.11",
+        "vite-svg-loader": "^2.2.0",
+        "vue-cli-plugin-element-plus": "~0.0.13"
+    },
+    "browserslist": [
+        "> 1%",
+        "last 2 versions",
+        "not dead"
+    ]
+}

+ 6 - 2
src/api/common.ts

@@ -91,7 +91,9 @@ export interface UserInfoResponse extends BaseResponse {
 export const getUserInfo = (ticket: string) => {
   // debugger
    return request<UserInfoResponse>('GET', {
-     url: `http://61.147.254.211:30876/tpbd-cas/user?ticket=${ticket}`,
+     url: `${
+       import.meta.env.VITE_API_SERVER as string
+     }/tpbd-cas/user?ticket=${ticket}`,
      headers: {
        AppId: '3bcb760743ea456faba29a1dfb247bf4',
      },
@@ -154,7 +156,9 @@ export interface NoticeInfoResponse extends BaseResponse {
 
 export const getMessage = (params: NoticeInfoParams) =>
   request<NoticeInfoResponse>('GET', {
-    url: `http://61.147.254.211:30876/notice-info/messagepushinfo/list`,
+    url: `${
+      import.meta.env.VITE_API_SERVER as string
+    }/notice-info/messagepushinfo/list`,
     headers: {
       AppId: '3bcb760743ea456faba29a1dfb247bf4',
     },

+ 1 - 1
src/components/AuthImage/index.vue

@@ -21,7 +21,7 @@ export default defineComponent({
   setup(props) {
     const img = ref(null);
     onMounted(() => {
-      console.log(img);
+      // console.log(img);
       Object.defineProperty(Image.prototype, 'authsrc', {
         writable: true,
         enumerable: true,

+ 3 - 1
src/components/MapView/index.tsx

@@ -85,7 +85,9 @@ export default defineComponent({
     onMounted(() => {
       const map = new window.minemap.Map({
         container: 'map',
-        style: 'http://61.147.254.211:21009/service/solu/style/id/12886' /*底图样式*/,
+        style:
+          (import.meta.env.VITE_MAP_SERVER as string) +
+          '/service/solu/style/id/12886' /*底图样式*/,
         center: [118.29564, 33.97441] /*地图中心点*/,
         zoom: 14 /*地图默认缩放等级*/,
         pitch: 0 /*地图俯仰角度*/,

+ 10 - 9
src/components/MarkerMap/index.tsx

@@ -242,8 +242,8 @@ export default defineComponent({
           });
         case '单兵': {
           var callback = () => {
-            console.log(marker['deviceCode']);
-            console.log(marker['userId']);
+            // console.log(marker['deviceCode']);
+            // console.log(marker['userId']);
             // daHuaStore.DAHUAUserObj(marker["userId"]).then(deviceUser=>{
             //              console.log(deviceUser);
             //              let memberObj = {
@@ -323,8 +323,8 @@ export default defineComponent({
     };
 
     const videoplay = (item: { type: string; userId: any; channelId: any }) => {
-      console.log('播放视频');
-      console.log(item);
+      // console.log('播放视频');
+      // console.log(item);
       if (!window.theSocket.websocket) {
         ElMessage.warning('请先打开视频插件');
         return;
@@ -366,7 +366,7 @@ export default defineComponent({
       },
     ) => {
       const self = this;
-      console.log(userCode);
+      // console.log(userCode);
       localStorage.setItem('userId', userCode);
       //初始websocket实例,保存在window中方便调用。一个浏览器tab页面只能初始化一次。所有的控件窗口,通过该websocket实例去生成不同的窗口实例,不同的控件窗口通过自己的窗口实例去调用初始化、关闭、隐藏等
       window.theSocket = new window.InitWebSocketClass(
@@ -375,7 +375,7 @@ export default defineComponent({
         {
           //客户端登陆成功通知;
           loginSuccess: (v: any) => {
-            console.log(2222222222222222);
+            // console.log(2222222222222222);
             console.log('loginSuccess-->', v);
             initWnd();
           },
@@ -419,7 +419,7 @@ export default defineComponent({
     };
 
     const initWnd = () => {
-      console.log(1111);
+      // console.log(1111);
       //左边窗口类型参数 分割 2行2列
       const typeObj = {
         rows: 2,
@@ -487,7 +487,7 @@ export default defineComponent({
       markers: State['markers'],
       image: any,
     ) => {
-      console.log(state.markers);
+      // console.log(state.markers);
       state.markers.push(
         ...markers.map((i) => {
           const nextImage =
@@ -670,7 +670,8 @@ export default defineComponent({
 
     onMounted(async () => {
       window.minemap.util.getJSON(
-        'http://61.147.254.211:21009/service/solu/style/id/12878',
+        (import.meta.env.VITE_MAP_SERVER as string) +
+          '/service/solu/style/id/12878',
         function (error, data) {
           data.layers.forEach(function (layer: any) {
             //判断是否道路线图层

+ 2 - 2
src/constants/constants.ts

@@ -1,7 +1,7 @@
 export const BaseMediaUrl =
-  'http://61.147.254.211:30876/YJZH-SQ/api/common/download/resource?resource=';
+  (import.meta.env.VITE_API_SERVER as string)+'/YJZH-SQ/api/common/download/resource?resource=';
   // 'http://sqpcbg.xt.wenhq.top:8083/api/common/download/resource?resource=';
-export const BaseLoginUrl = 'http://61.147.254.211:9999/home/#/login';
+export const BaseLoginUrl = (import.meta.env.VITE_LOGIN_SERVER as string)+'/home/#/login';
 export const BaseReg = /^\+\+\+\+[\.]+|[\d|\w|\s|\u4e00-\u9fa5]+\+\+\+\+$/;
 
 export const DA_HUA = {

+ 6 - 2
src/layout/BaseLayout/index.tsx

@@ -129,6 +129,10 @@ export default defineComponent({
     const store = useIncidentStore();
     const daHuaStore = useDaHuaStore();
 
+    const sqdh = ref(import.meta.env.VITE_DH_SERVER as string);
+    
+    console.log(sqdh.value);
+
 
     const handleDaHuaSystem = () => {
       daHuaStore.dahuaUserVisible = true;
@@ -221,7 +225,7 @@ export default defineComponent({
           })}
           id="DAHUA"
           name="DAHUA"
-          src="http://sqdh.xt.wenhq.top:8083"
+          src={ sqdh.value }
           frameborder="0"
         />
         <header class="base-layout-title-contatisner">
@@ -239,7 +243,7 @@ export default defineComponent({
             // marker={store.incidentDetail}
           />
 
-          <div class="yjld_btn" ref={ yjzh_btn }></div>
+          <div class="yjld_btn" ref={yjzh_btn}></div>
         </main>
       </section>
     );

+ 6 - 1
src/utils/request.ts

@@ -5,13 +5,18 @@ import useMainStore from '@/store/useMainStore';
 import { BaseLoginUrl, DA_HUA_URL_PREFIX } from '@/constants/constants';
 import { useDaHuaStore } from '@/store';
 
+// const ENV = import.meta.env;
+//     console.log('ENV', ENV.VITE_MAP_SERVER);//获取环境变量
+
 // const baseURL =
 //   process.env.NODE_ENV === 'production'
 //     ? 'http://sqpcbg.xt.wenhq.top:8083/api'
 //     : '/api';
+
 const baseURL =
   process.env.NODE_ENV === 'production'
-    ? 'http://61.147.254.211:30876/YJZH-SQ/api'
+    ? ((import.meta.env.VITE_API_SERVER as string) +
+      '/YJZH-SQ/api')
     : '/api';
 
 const CancelToken = axios.CancelToken;

+ 1 - 1
src/views/IncidentDetail/index.scss

@@ -804,7 +804,7 @@
                                 font-weight: 400;
                             }
                             .ptime {
-                                background-image: url("../../assets/card-bg/blue@2x.png");
+                                // background-image: url("../../assets/card-bg/blue@2x.png");
                                 width: px2rem(310px * 2);
                                 height: px2rem(48px * 2);
                                 background-repeat: no-repeat;

+ 2 - 2
src/views/IncidentDetail/index.tsx

@@ -91,7 +91,7 @@ export default defineComponent({
       () => store.incidentDetail,
       (next) => {
         if(next.baseInfo==undefined||next.baseInfo==null) router.push('/home');
-        console.log(next)
+        // console.log(next)
       },
     );
 
@@ -129,7 +129,7 @@ export default defineComponent({
         // div.scrollTop = div.scrollHeight;
         try {
           var div = document.getElementById('cardlog1');
-          console.log(div?.scrollTop);
+          // console.log(div?.scrollTop);
           if (div && div.scrollTop == 0) div.scrollTop = div.scrollHeight;
         } catch (error) {
           // debugger

+ 15 - 1
vite.config.ts

@@ -1,5 +1,5 @@
 import path from 'path';
-import { UserConfigExport, ConfigEnv } from 'vite';
+import { UserConfigExport, ConfigEnv, loadEnv } from 'vite';
 import vueJsx from '@vitejs/plugin-vue-jsx';
 import vue from '@vitejs/plugin-vue';
 import svgLoader from 'vite-svg-loader';
@@ -7,6 +7,13 @@ import imageLoader from '@rollup/plugin-image';
 import Components from 'unplugin-vue-components/vite';
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
 import ElementPlus from 'unplugin-element-plus/vite';
+import { createHtmlPlugin } from 'vite-plugin-html';
+
+
+const getEnvFn = (mode, target) => {
+  return loadEnv(mode, process.cwd())[target];
+};
+
 
 /**
  * @type {import('vite').UserConfig}
@@ -67,6 +74,13 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
         // options are passed on to @vue/babel-plugin-jsx
       }),
       imageLoader(),
+      createHtmlPlugin({
+        inject: {
+          data: {
+            mapurl: getEnvFn(mode, 'VITE_MAP_SERVER'),
+          },
+        },
+      }),
       // svgLoader(),
       // ElementPlus({ useSource: true }),
     ],

+ 253 - 2
yarn.lock

@@ -352,6 +352,14 @@
     estree-walker "^2.0.1"
     picomatch "^2.2.2"
 
+"@rollup/pluginutils@^4.1.2":
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751"
+  integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==
+  dependencies:
+    estree-walker "^2.0.1"
+    picomatch "^2.2.2"
+
 "@trysound/sax@0.2.0":
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
@@ -714,6 +722,11 @@ async-validator@^4.0.3:
   resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.0.7.tgz#034a0fd2103a6b2ebf010da75183bec299247afe"
   integrity sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==
 
+async@0.9.x:
+  version "0.9.2"
+  resolved "https://registry.npmmirror.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+  integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==
+
 axios@^0.24.0:
   version "0.24.0"
   resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6"
@@ -779,6 +792,11 @@ browserslist@^4.16.6:
     node-releases "^2.0.0"
     picocolors "^1.0.0"
 
+buffer-from@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+  integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
 builtins@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.0.0.tgz#a8345420de82068fdc4d6559d0456403a8fb1905"
@@ -791,6 +809,14 @@ callsites@^3.0.0, callsites@^3.1.0:
   resolved "https://registry.nlark.com/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
   integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=
 
+camel-case@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+  integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+  dependencies:
+    pascal-case "^3.1.2"
+    tslib "^2.0.3"
+
 camelcase@^6.0.0:
   version "6.2.0"
   resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz?cache=0&sync_timestamp=1603921787305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
@@ -801,7 +827,7 @@ caniuse-lite@^1.0.30001265:
   resolved "https://registry.npmmirror.com/caniuse-lite/download/caniuse-lite-1.0.30001269.tgz?cache=0&sync_timestamp=1634446586264&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001269.tgz#3a71bee03df627364418f9fd31adfc7aa1cc2d56"
   integrity sha1-OnG+4D32JzZEGPn9Ma38eqHMLVY=
 
-chalk@^2.0.0, chalk@^2.1.0:
+chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
   version "2.4.2"
   resolved "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646697260&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
   integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
@@ -838,6 +864,13 @@ chardet@^0.7.0:
   optionalDependencies:
     fsevents "~2.3.2"
 
+clean-css@^5.2.2:
+  version "5.2.4"
+  resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4"
+  integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==
+  dependencies:
+    source-map "~0.6.0"
+
 cli-cursor@^3.1.0:
   version "3.1.0"
   resolved "https://registry.nlark.com/cli-cursor/download/cli-cursor-3.1.0.tgz?cache=0&sync_timestamp=1629747382582&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcli-cursor%2Fdownload%2Fcli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
@@ -879,16 +912,41 @@ color-name@~1.1.4:
   resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
   integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
 
+colorette@^2.0.16:
+  version "2.0.16"
+  resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
+  integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
+
+commander@^2.20.0:
+  version "2.20.3"
+  resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
 commander@^7.2.0:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
 
+commander@^8.3.0:
+  version "8.3.0"
+  resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
 
+connect-history-api-fallback@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+  integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+consola@^2.15.3:
+  version "2.15.3"
+  resolved "https://registry.npmmirror.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
+  integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
+
 convert-source-map@^1.7.0:
   version "1.8.0"
   resolved "https://registry.nlark.com/convert-source-map/download/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
@@ -1019,6 +1077,24 @@ domutils@^2.6.0:
     domelementtype "^2.2.0"
     domhandler "^4.2.0"
 
+dot-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+  integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+  dependencies:
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+
+dotenv-expand@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-8.0.1.tgz#332aa17c14b12e28e2e230f8d183eecc1c014fdc"
+  integrity sha512-j/Ih7bIERDR5PzI89Zu8ayd3tXZ6E3dbY0ljQ9Db0K87qBO8zdLsi2dIvDHMWtjC3Yxb8XixOTHAtia0fDHRpg==
+
+dotenv@^16.0.0:
+  version "16.0.0"
+  resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411"
+  integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==
+
 echarts@^5.2.2:
   version "5.2.2"
   resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.2.2.tgz#ec3c8b2a151cbba71ba3c2c7cf9b2f2047ce4370"
@@ -1027,6 +1103,13 @@ echarts@^5.2.2:
     tslib "2.3.0"
     zrender "5.2.1"
 
+ejs@^3.1.6:
+  version "3.1.6"
+  resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a"
+  integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==
+  dependencies:
+    jake "^10.6.1"
+
 electron-to-chromium@^1.3.867:
   version "1.3.872"
   resolved "https://registry.npmmirror.com/electron-to-chromium/download/electron-to-chromium-1.3.872.tgz#2311a82f344d828bab6904818adc4afb57b35369"
@@ -1389,6 +1472,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.7:
     merge2 "^1.3.0"
     micromatch "^4.0.4"
 
+fast-glob@^3.2.11:
+  version "3.2.11"
+  resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+  integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+  dependencies:
+    "@nodelib/fs.stat" "^2.0.2"
+    "@nodelib/fs.walk" "^1.2.3"
+    glob-parent "^5.1.2"
+    merge2 "^1.3.0"
+    micromatch "^4.0.4"
+
 fast-json-stable-stringify@^2.0.0:
   version "2.1.0"
   resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -1420,6 +1514,13 @@ file-entry-cache@^5.0.1:
   dependencies:
     flat-cache "^2.0.1"
 
+filelist@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b"
+  integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==
+  dependencies:
+    minimatch "^3.0.4"
+
 fill-range@^7.0.1:
   version "7.0.1"
   resolved "https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -1446,6 +1547,15 @@ follow-redirects@^1.14.4:
   resolved "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.4.tgz?cache=0&sync_timestamp=1631622163078&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
   integrity sha1-g4/fSKi73XnlLuUfsclOPtmLk3k=
 
+fs-extra@^10.0.0:
+  version "10.0.0"
+  resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
+  integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==
+  dependencies:
+    graceful-fs "^4.2.0"
+    jsonfile "^6.0.1"
+    universalify "^2.0.0"
+
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -1532,6 +1642,11 @@ globby@^11.0.4:
     merge2 "^1.3.0"
     slash "^3.0.0"
 
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+  version "4.2.9"
+  resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+  integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+
 has-flag@^3.0.0:
   version "3.0.0"
   resolved "https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -1554,6 +1669,24 @@ hash-sum@^2.0.0:
   resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
   integrity sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=
 
+he@1.2.0, he@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+  integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+html-minifier-terser@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab"
+  integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==
+  dependencies:
+    camel-case "^4.1.2"
+    clean-css "^5.2.2"
+    commander "^8.3.0"
+    he "^1.2.0"
+    param-case "^3.0.4"
+    relateurl "^0.2.7"
+    terser "^5.10.0"
+
 html-tags@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
@@ -1684,6 +1817,16 @@ isexe@^2.0.0:
   resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
   integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
 
+jake@^10.6.1:
+  version "10.8.2"
+  resolved "https://registry.npmmirror.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
+  integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==
+  dependencies:
+    async "0.9.x"
+    chalk "^2.4.2"
+    filelist "^1.0.1"
+    minimatch "^3.0.4"
+
 js-tokens@^4.0.0:
   version "4.0.0"
   resolved "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -1724,6 +1867,15 @@ json5@^2.1.2:
   dependencies:
     minimist "^1.2.5"
 
+jsonfile@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+  dependencies:
+    universalify "^2.0.0"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
 klona@^2.0.4:
   version "2.0.4"
   resolved "https://registry.npm.taobao.org/klona/download/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
@@ -1763,6 +1915,13 @@ lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21:
   resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
 
+lower-case@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+  integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+  dependencies:
+    tslib "^2.0.3"
+
 lru-cache@^6.0.0:
   version "6.0.0"
   resolved "https://registry.nlark.com/lru-cache/download/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -1881,6 +2040,22 @@ nice-try@^1.0.4:
   resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1614510039289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
   integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=
 
+no-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+  integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+  dependencies:
+    lower-case "^2.0.2"
+    tslib "^2.0.3"
+
+node-html-parser@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.npmmirror.com/node-html-parser/-/node-html-parser-5.2.0.tgz#6f29fd00d79f65334e7e20200964644207925607"
+  integrity sha512-fmiwLfQu+J2A0zjwSEkztSHexAf5qq/WoiL/Hgo1K7JpfEP+OGWY5maG0kGaM+IFVdixF/1QbyXaQ3h4cGfeLw==
+  dependencies:
+    css-select "^4.1.3"
+    he "1.2.0"
+
 node-releases@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/node-releases/download/node-releases-2.0.0.tgz?cache=0&sync_timestamp=1634124829358&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fnode-releases%2Fdownload%2Fnode-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400"
@@ -1968,6 +2143,14 @@ pako@^2.0.4:
   resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d"
   integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==
 
+param-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
+  integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
+  dependencies:
+    dot-case "^3.0.4"
+    tslib "^2.0.3"
+
 parent-module@^1.0.0:
   version "1.0.1"
   resolved "https://registry.npmmirror.com/parent-module/download/parent-module-1.0.1.tgz?cache=0&sync_timestamp=1633337513286&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fparent-module%2Fdownload%2Fparent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -1980,6 +2163,14 @@ parse-headers@^2.0.2:
   resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf"
   integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==
 
+pascal-case@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+  integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+  dependencies:
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -2000,6 +2191,11 @@ path-type@^4.0.0:
   resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
   integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
 
+pathe@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
+  integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
+
 pbf@3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a"
@@ -2115,6 +2311,11 @@ regexpp@^3.2.0:
   resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
   integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
 
+relateurl@^0.2.7:
+  version "0.2.7"
+  resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+  integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
 resize-detector@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/resize-detector/-/resize-detector-0.3.0.tgz#fe495112e184695500a8f51e0389f15774cb1cfc"
@@ -2304,16 +2505,29 @@ source-map-js@^0.6.2:
   resolved "https://registry.npm.taobao.org/source-map-js/download/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
   integrity sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=
 
+source-map-support@~0.5.20:
+  version "0.5.21"
+  resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+  dependencies:
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
+
 source-map@^0.5.0:
   version "0.5.7"
   resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
   integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
 
-source-map@^0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
   version "0.6.1"
   resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
   integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
 
+source-map@~0.7.2:
+  version "0.7.3"
+  resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+  integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
 sourcemap-codec@^1.4.4:
   version "1.4.8"
   resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
@@ -2408,6 +2622,15 @@ table@^5.2.3:
     slice-ansi "^2.1.0"
     string-width "^3.0.0"
 
+terser@^5.10.0:
+  version "5.10.0"
+  resolved "https://registry.npmmirror.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc"
+  integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==
+  dependencies:
+    commander "^2.20.0"
+    source-map "~0.7.2"
+    source-map-support "~0.5.20"
+
 text-table@^0.2.0:
   version "0.2.0"
   resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -2466,6 +2689,11 @@ tslib@^1.8.1, tslib@^1.9.0:
   resolved "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
   integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=
 
+tslib@^2.0.3:
+  version "2.3.1"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+  integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+
 tsutils@^3.21.0:
   version "3.21.0"
   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -2495,6 +2723,11 @@ typescript@^4.4.4:
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
   integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
 
+universalify@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
 unplugin-element-plus@^0.1.3:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/unplugin-element-plus/-/unplugin-element-plus-0.1.3.tgz#3fefadef8a2a965ff3a2846beae6ae651f194fee"
@@ -2540,6 +2773,24 @@ v8-compile-cache@^2.0.3:
   resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.3.0.tgz?cache=0&sync_timestamp=1614993639567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8-compile-cache%2Fdownload%2Fv8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
   integrity sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=
 
+vite-plugin-html@^3.0.6:
+  version "3.0.6"
+  resolved "https://registry.npmmirror.com/vite-plugin-html/-/vite-plugin-html-3.0.6.tgz#8edebff956aa05529606a9753c71979bb311f634"
+  integrity sha512-B6ZAufvqUqdfPhcV+El8NNI3qV0d3ZntIur2UnP4tcHBV/O2d+6wHF79bJWuqR4WsvmsV7dejCNS3rAYFCisWw==
+  dependencies:
+    "@rollup/pluginutils" "^4.1.2"
+    colorette "^2.0.16"
+    connect-history-api-fallback "^1.6.0"
+    consola "^2.15.3"
+    dotenv "^16.0.0"
+    dotenv-expand "^8.0.1"
+    ejs "^3.1.6"
+    fast-glob "^3.2.11"
+    fs-extra "^10.0.0"
+    html-minifier-terser "^6.1.0"
+    node-html-parser "^5.2.0"
+    pathe "^0.2.0"
+
 vite-svg-loader@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/vite-svg-loader/-/vite-svg-loader-2.2.0.tgz#b5d6ca948b03e45320cb4f96c44bf88f5bef0a2c"