@kengic/vue 0.21.4 → 0.21.5-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. package/dist/kengic-vue.js +8 -3
  2. package/dist/project/build/config/themeConfig.ts +67 -0
  3. package/dist/project/build/constant.ts +6 -0
  4. package/dist/project/build/generate/generateModifyVars.ts +39 -0
  5. package/dist/project/build/generate/icon/index.ts +66 -0
  6. package/dist/project/build/getConfigFileName.ts +7 -0
  7. package/dist/project/build/index.ts +9 -0
  8. package/dist/project/build/script/buildConf.ts +45 -0
  9. package/dist/project/build/script/postBuild.ts +21 -0
  10. package/dist/project/build/utils.ts +92 -0
  11. package/dist/project/build/vite/plugin/compress.ts +32 -0
  12. package/dist/project/build/vite/plugin/html.ts +39 -0
  13. package/dist/project/build/vite/plugin/imagemin.ts +34 -0
  14. package/dist/project/build/vite/plugin/index.ts +80 -0
  15. package/dist/project/build/vite/plugin/mock.ts +19 -0
  16. package/dist/project/build/vite/plugin/pwa.ts +33 -0
  17. package/dist/project/build/vite/plugin/styleImport.ts +81 -0
  18. package/dist/project/build/vite/plugin/svgSprite.ts +17 -0
  19. package/dist/project/build/vite/plugin/theme.ts +100 -0
  20. package/dist/project/build/vite/plugin/visualizer.ts +17 -0
  21. package/dist/project/build/vite/proxy.ts +34 -0
  22. package/dist/project/index.ts +1 -0
  23. package/dist/project/src/api/sys/model/menuModel.ts +17 -0
  24. package/dist/project/src/api/sys/model/uploadModel.ts +5 -0
  25. package/dist/project/src/api/sys/model/userModel.ts +57 -0
  26. package/dist/project/src/enums/CompTypeEnum.ts +32 -0
  27. package/dist/project/src/enums/DateTypeEnum.ts +8 -0
  28. package/dist/project/src/enums/appEnum.ts +58 -0
  29. package/dist/project/src/enums/breakpointEnum.ts +28 -0
  30. package/dist/project/src/enums/cacheEnum.ts +39 -0
  31. package/dist/project/src/enums/exceptionEnum.ts +27 -0
  32. package/dist/project/src/enums/httpEnum.ts +50 -0
  33. package/dist/project/src/enums/jeecgEnum.ts +23 -0
  34. package/dist/project/src/enums/menuEnum.ts +50 -0
  35. package/dist/project/src/enums/pageEnum.ts +19 -0
  36. package/dist/project/src/enums/roleEnum.ts +7 -0
  37. package/dist/project/src/enums/sizeEnum.ts +27 -0
  38. package/dist/project/types/axios.d.ts +57 -0
  39. package/dist/project/types/config.d.ts +178 -0
  40. package/dist/project/types/global.d.ts +92 -0
  41. package/dist/project/types/index.d.ts +27 -0
  42. package/dist/project/types/module.d.ts +18 -0
  43. package/dist/project/types/store.d.ts +59 -0
  44. package/dist/project/types/utils.d.ts +5 -0
  45. package/dist/project/types/vue-router.d.ts +47 -0
  46. package/package.json +25 -2
@@ -0,0 +1,7 @@
1
+ export enum RoleEnum {
2
+ // super admin
3
+ SUPER = 'super',
4
+
5
+ // tester
6
+ TEST = 'test',
7
+ }
@@ -0,0 +1,27 @@
1
+ export enum SizeEnum {
2
+ DEFAULT = 'default',
3
+ SMALL = 'small',
4
+ LARGE = 'large',
5
+ }
6
+
7
+ export enum SizeNumberEnum {
8
+ DEFAULT = 48,
9
+ SMALL = 16,
10
+ LARGE = 64,
11
+ }
12
+
13
+ export enum ScreenSizeEnum {
14
+ XS = 480,
15
+ SM = 576,
16
+ MD = 768,
17
+ LG = 992,
18
+ XL = 1200,
19
+ }
20
+
21
+ export const sizeMap: Map<SizeEnum, SizeNumberEnum> = (() => {
22
+ const map = new Map<SizeEnum, SizeNumberEnum>();
23
+ map.set(SizeEnum.DEFAULT, SizeNumberEnum.DEFAULT);
24
+ map.set(SizeEnum.SMALL, SizeNumberEnum.SMALL);
25
+ map.set(SizeEnum.LARGE, SizeNumberEnum.LARGE);
26
+ return map;
27
+ })();
@@ -0,0 +1,57 @@
1
+ export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined;
2
+ export type SuccessMessageMode = 'none' | 'success' | 'error' | undefined;
3
+
4
+ export interface RequestOptions {
5
+ // 将请求参数拼接到url
6
+ joinParamsToUrl?: boolean;
7
+ // 格式化请求参数时间
8
+ formatDate?: boolean;
9
+ // 是否处理请求结果
10
+ isTransformResponse?: boolean;
11
+ // 是否返回本地响应头,需要获取响应头时使用此属性
12
+ isReturnNativeResponse?: boolean;
13
+ // Whether to join url
14
+ joinPrefix?: boolean;
15
+ // 接口地址,如果保留为空,则使用默认值
16
+ apiUrl?: string;
17
+ // 请求拼接路径
18
+ urlPrefix?: string;
19
+ // 错误消息提示类型
20
+ errorMessageMode?: ErrorMessageMode;
21
+ // 成功消息提示类型
22
+ successMessageMode?: SuccessMessageMode;
23
+ // 是否添加时间戳
24
+ joinTime?: boolean;
25
+ ignoreCancelToken?: boolean;
26
+ //是否在标头中发送令牌
27
+ withToken?: boolean;
28
+ }
29
+
30
+ export interface Result<T = any> {
31
+ code: number;
32
+ type: 'success' | 'error' | 'warning';
33
+ message: string;
34
+ success?: boolean | null;
35
+ timestamp?: number | null;
36
+ result: T;
37
+ }
38
+
39
+ //文件上传参数
40
+ export interface UploadFileParams {
41
+ // 其他参数
42
+ data?: Recordable;
43
+ // 文件参数接口字段名
44
+ name?: string;
45
+ // 文件
46
+ file: File | Blob;
47
+ // 文件名
48
+ filename?: string;
49
+ [key: string]: any;
50
+ }
51
+ //文件返回参数
52
+ export interface UploadFileCallBack {
53
+ // 成功回调方法
54
+ success?: any;
55
+ // 是否返回响应头,需要获取响应头时使用此属性
56
+ isReturnResponse?: boolean;
57
+ }
@@ -0,0 +1,178 @@
1
+ import {
2
+ ContentEnum,
3
+ PermissionModeEnum,
4
+ RouterTransitionEnum,
5
+ SessionTimeoutProcessingEnum,
6
+ SettingButtonPositionEnum,
7
+ ThemeEnum,
8
+ } from '../src/enums/appEnum';
9
+ import { CacheTypeEnum } from '../src/enums/cacheEnum';
10
+
11
+ import { MenuModeEnum, MenuTypeEnum, MixSidebarTriggerEnum, TriggerEnum } from '../src/enums/menuEnum';
12
+
13
+ export type LocaleType = 'zh_CN' | 'en' | 'ru' | 'ja' | 'ko';
14
+
15
+ export interface MenuSetting {
16
+ bgColor: string;
17
+ fixed: boolean;
18
+ collapsed: boolean;
19
+ canDrag: boolean;
20
+ show: boolean;
21
+ hidden: boolean;
22
+ split: boolean;
23
+ menuWidth: number;
24
+ mode: MenuModeEnum;
25
+ type: MenuTypeEnum;
26
+ theme: ThemeEnum;
27
+ topMenuAlign: 'start' | 'center' | 'end';
28
+ trigger: TriggerEnum;
29
+ accordion: boolean;
30
+ closeMixSidebarOnChange: boolean;
31
+ collapsedShowTitle: boolean;
32
+ mixSideTrigger: MixSidebarTriggerEnum;
33
+ mixSideFixed: boolean;
34
+ }
35
+
36
+ export interface MultiTabsSetting {
37
+ cache: boolean;
38
+ show: boolean;
39
+ showQuick: boolean;
40
+ canDrag: boolean;
41
+ showRedo: boolean;
42
+ showFold: boolean;
43
+ theme: string;
44
+ }
45
+
46
+ export interface HeaderSetting {
47
+ bgColor: string;
48
+ fixed: boolean;
49
+ show: boolean;
50
+ theme: ThemeEnum;
51
+ // Turn on full screen
52
+ showFullScreen: boolean;
53
+ // Whether to show the lock screen
54
+ useLockPage: boolean;
55
+ // Show document button
56
+ showDoc: boolean;
57
+ // Show message center button
58
+ showNotice: boolean;
59
+ showSearch: boolean;
60
+ }
61
+
62
+ export interface LocaleSetting {
63
+ showPicker: boolean;
64
+ // Current language
65
+ locale: LocaleType;
66
+ // default language
67
+ fallback: LocaleType;
68
+ // available Locales
69
+ availableLocales: LocaleType[];
70
+ }
71
+
72
+ export interface TransitionSetting {
73
+ // Whether to open the page switching animation
74
+ enable: boolean;
75
+ // Route basic switching animation
76
+ basicTransition: RouterTransitionEnum;
77
+ // Whether to open page switching loading
78
+ openPageLoading: boolean;
79
+ // Whether to open the top progress bar
80
+ openNProgress: boolean;
81
+ }
82
+
83
+ export interface ProjectConfig {
84
+ // Storage location of permission related information
85
+ permissionCacheType: CacheTypeEnum;
86
+ // Whether to show the configuration button
87
+ showSettingButton: boolean;
88
+ // Whether to show the theme switch button
89
+ showDarkModeToggle: boolean;
90
+ // Configure where the button is displayed
91
+ settingButtonPosition: SettingButtonPositionEnum;
92
+ // Permission mode
93
+ permissionMode: PermissionModeEnum;
94
+ // Session timeout processing
95
+ sessionTimeoutProcessing: SessionTimeoutProcessingEnum;
96
+ // Website gray mode, open for possible mourning dates
97
+ grayMode: boolean;
98
+ // Whether to turn on the color weak mode
99
+ colorWeak: boolean;
100
+ // Theme color
101
+ themeColor: string;
102
+
103
+ // The main interface is displayed in full screen, the menu is not displayed, and the top
104
+ fullContent: boolean;
105
+ // content width
106
+ contentMode: ContentEnum;
107
+ // Whether to display the logo
108
+ showLogo: boolean;
109
+ // Whether to show the global footer
110
+ showFooter: boolean;
111
+ // menuType: MenuTypeEnum;
112
+ headerSetting: HeaderSetting;
113
+ // menuSetting
114
+ menuSetting: MenuSetting;
115
+ // Multi-tab settings
116
+ multiTabsSetting: MultiTabsSetting;
117
+ // Animation configuration
118
+ transitionSetting: TransitionSetting;
119
+ // pageLayout whether to enable keep-alive
120
+ openKeepAlive: boolean;
121
+ // Lock screen time
122
+ lockTime: number;
123
+ // Show breadcrumbs
124
+ showBreadCrumb: boolean;
125
+ // Show breadcrumb icon
126
+ showBreadCrumbIcon: boolean;
127
+ // Use error-handler-plugin
128
+ useErrorHandle: boolean;
129
+ // Whether to open back to top
130
+ useOpenBackTop: boolean;
131
+ // Is it possible to embed iframe pages
132
+ canEmbedIFramePage: boolean;
133
+ // Whether to delete unclosed messages and notify when switching the interface
134
+ closeMessageOnSwitch: boolean;
135
+ // Whether to cancel the http request that has been sent but not responded when switching the interface.
136
+ removeAllHttpPending: boolean;
137
+ }
138
+
139
+ export interface GlobConfig {
140
+ // Site title
141
+ title: string;
142
+ // Service interface url
143
+ apiUrl: string;
144
+ domainUrl: string;
145
+ // Upload url (作废)
146
+ uploadUrl?: string;
147
+ openSso?: string;
148
+ openQianKun?: string;
149
+ casBaseUrl?: string;
150
+ // onlineview url
151
+ viewUrl?: string;
152
+ // Service interface url prefix
153
+ urlPrefix?: string;
154
+ // Project abbreviation
155
+ shortName: string;
156
+ }
157
+ export interface GlobEnvConfig {
158
+ // Site title
159
+ VITE_GLOB_APP_TITLE: string;
160
+ // Service interface url
161
+ VITE_GLOB_API_URL: string;
162
+ VITE_USE_MOCK: string;
163
+ // Service interface url prefix
164
+ VITE_GLOB_API_URL_PREFIX?: string;
165
+ // Project abbreviation
166
+ VITE_GLOB_APP_SHORT_NAME: string;
167
+ //是否开启单点登录
168
+ VITE_GLOB_APP_OPEN_SSO: string;
169
+ //是否开启微应用模式
170
+ VITE_GLOB_APP_OPEN_QIANKUN: string;
171
+ //单点服务端地址
172
+ VITE_GLOB_APP_CAS_BASE_URL: string;
173
+ VITE_GLOB_DOMAIN_URL: string;
174
+ // Upload url
175
+ VITE_GLOB_UPLOAD_URL?: string;
176
+ // view url
177
+ VITE_GLOB_ONLINE_VIEW_URL?: string;
178
+ }
@@ -0,0 +1,92 @@
1
+ import type { ComponentPublicInstance, ComponentRenderProxy, FunctionalComponent, PropType as VuePropType, VNode, VNodeChild } from 'vue';
2
+
3
+ declare global {
4
+ const __APP_INFO__: {
5
+ pkg: {
6
+ name: string;
7
+ version: string;
8
+ dependencies: Recordable<string>;
9
+ devDependencies: Recordable<string>;
10
+ };
11
+ lastBuildTime: string;
12
+ };
13
+ // declare interface Window {
14
+ // // Global vue app instance
15
+ // __APP__: App<Element>;
16
+ // }
17
+
18
+ // vue
19
+ declare type PropType<T> = VuePropType<T>;
20
+ declare type VueNode = VNodeChild | JSX.Element;
21
+
22
+ export type Writable<T> = {
23
+ -readonly [P in keyof T]: T[P];
24
+ };
25
+
26
+ declare type Nullable<T> = T | null;
27
+ declare type NonNullable<T> = T extends null | undefined ? never : T;
28
+ declare type Recordable<T = any> = Record<string, T>;
29
+ declare type ReadonlyRecordable<T = any> = {
30
+ readonly [key: string]: T;
31
+ };
32
+ declare type Indexable<T = any> = {
33
+ [key: string]: T;
34
+ };
35
+ declare type DeepPartial<T> = {
36
+ [P in keyof T]?: DeepPartial<T[P]>;
37
+ };
38
+ declare type TimeoutHandle = ReturnType<typeof setTimeout>;
39
+ declare type IntervalHandle = ReturnType<typeof setInterval>;
40
+
41
+ declare interface ChangeEvent extends Event {
42
+ target: HTMLInputElement;
43
+ }
44
+
45
+ declare interface WheelEvent {
46
+ path?: EventTarget[];
47
+ }
48
+ interface ImportMetaEnv extends ViteEnv {
49
+ __: unknown;
50
+ }
51
+
52
+ declare interface ViteEnv {
53
+ VITE_PORT: number;
54
+ VITE_USE_MOCK: boolean;
55
+ VITE_USE_PWA: boolean;
56
+ VITE_PUBLIC_PATH: string;
57
+ VITE_PROXY: [string, string][];
58
+ VITE_GLOB_APP_TITLE: string;
59
+ VITE_GLOB_APP_SHORT_NAME: string;
60
+ VITE_USE_CDN: boolean;
61
+ VITE_DROP_CONSOLE: boolean;
62
+ VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none';
63
+ VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean;
64
+ VITE_LEGACY: boolean;
65
+ VITE_USE_IMAGEMIN: boolean;
66
+ VITE_GENERATE_UI: string;
67
+ }
68
+
69
+ declare function parseInt(s: string | number, radix?: number): number;
70
+
71
+ declare function parseFloat(string: string | number): number;
72
+
73
+ namespace JSX {
74
+ // tslint:disable no-empty-interface
75
+ type Element = VNode;
76
+ // tslint:disable no-empty-interface
77
+ type ElementClass = ComponentRenderProxy;
78
+ interface ElementAttributesProperty {
79
+ $props: any;
80
+ }
81
+ interface IntrinsicElements {
82
+ [elem: string]: any;
83
+ }
84
+ interface IntrinsicAttributes {
85
+ [elem: string]: any;
86
+ }
87
+ }
88
+ }
89
+
90
+ declare module 'vue' {
91
+ export type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>;
92
+ }
@@ -0,0 +1,27 @@
1
+ declare interface Fn<T = any, R = T> {
2
+ (...arg: T[]): R;
3
+ }
4
+
5
+ declare interface PromiseFn<T = any, R = T> {
6
+ (...arg: T[]): Promise<R>;
7
+ }
8
+
9
+ declare type RefType<T> = T | null;
10
+
11
+ declare type LabelValueOptions = {
12
+ label: string;
13
+ value: any;
14
+ [key: string]: string | number | boolean;
15
+ }[];
16
+
17
+ declare type EmitType = (event: string, ...args: any[]) => void;
18
+
19
+ declare type TargetContext = '_self' | '_blank';
20
+
21
+ declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
22
+ $el: T;
23
+ }
24
+
25
+ declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
26
+
27
+ declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
@@ -0,0 +1,18 @@
1
+ declare module '*.vue' {
2
+ import { DefineComponent } from 'vue';
3
+ const Component: DefineComponent<{}, {}, any>;
4
+ export default Component;
5
+ }
6
+
7
+ declare module 'ant-design-vue/dist/theme';
8
+
9
+ declare module 'ant-design-vue/es/locale/*' {
10
+ import { Locale } from 'ant-design-vue/types/locale-provider';
11
+ const locale: Locale & ReadonlyRecordable;
12
+ export default locale as Locale & ReadonlyRecordable;
13
+ }
14
+
15
+ declare module 'virtual:*' {
16
+ const result: any;
17
+ export default result;
18
+ }
@@ -0,0 +1,59 @@
1
+ import { RoleInfo } from '../src/api/sys/model/userModel';
2
+ import { ErrorTypeEnum } from '../src/enums/exceptionEnum';
3
+ import { MenuModeEnum, MenuTypeEnum } from '../src/enums/menuEnum';
4
+
5
+ // Lock screen information
6
+ export interface LockInfo {
7
+ // Password required
8
+ pwd?: string | undefined;
9
+ // Is it locked?
10
+ isLock?: boolean;
11
+ }
12
+
13
+ // Error-log information
14
+ export interface ErrorLogInfo {
15
+ // Type of error
16
+ type: ErrorTypeEnum;
17
+ // Error file
18
+ file: string;
19
+ // Error name
20
+ name?: string;
21
+ // Error message
22
+ message: string;
23
+ // Error stack
24
+ stack?: string;
25
+ // Error detail
26
+ detail: string;
27
+ // Error url
28
+ url: string;
29
+ // Error time
30
+ time?: string;
31
+ }
32
+
33
+ export interface UserInfo {
34
+ id: string | number;
35
+ userId: string | number;
36
+ username: string;
37
+ realname: string;
38
+ avatar: string;
39
+ desc?: string;
40
+ homePath?: string;
41
+ tenantid?: string | number;
42
+ roles: RoleInfo[];
43
+ orgCode?: string;
44
+ }
45
+
46
+ export interface LoginInfo {
47
+ multi_depart?: string | number;
48
+ userInfo?: object;
49
+ departs?: [];
50
+ tenantList?: [];
51
+ isLogin?: boolean;
52
+ }
53
+
54
+ export interface BeforeMiniState {
55
+ menuCollapsed?: boolean;
56
+ menuSplit?: boolean;
57
+ menuMode?: MenuModeEnum;
58
+ menuType?: MenuTypeEnum;
59
+ }
@@ -0,0 +1,5 @@
1
+ import type { ComputedRef, Ref } from 'vue';
2
+
3
+ export type DynamicProps<T> = {
4
+ [P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>;
5
+ };
@@ -0,0 +1,47 @@
1
+ import { RoleEnum } from '../src/enums/roleEnum';
2
+
3
+ export {};
4
+
5
+ declare module 'vue-router' {
6
+ interface RouteMeta extends Record<string | number | symbol, unknown> {
7
+ orderNo?: number;
8
+ // title
9
+ title: string;
10
+ // dynamic router level.
11
+ dynamicLevel?: number;
12
+ // dynamic router real route path (For performance).
13
+ realPath?: string;
14
+ // Whether to ignore permissions
15
+ ignoreAuth?: boolean;
16
+ // role info
17
+ roles?: RoleEnum[];
18
+ // Whether not to cache
19
+ ignoreKeepAlive?: boolean;
20
+ // Is it fixed on tab
21
+ affix?: boolean;
22
+ // icon on tab
23
+ icon?: string;
24
+ frameSrc?: string;
25
+ // current page transition
26
+ transitionName?: string;
27
+ // Whether the route has been dynamically added
28
+ hideBreadcrumb?: boolean;
29
+ // Hide submenu
30
+ hideChildrenInMenu?: boolean;
31
+ // Carrying parameters
32
+ carryParam?: boolean;
33
+ // Used internally to mark single-level menus
34
+ single?: boolean;
35
+ // Currently active menu
36
+ currentActiveMenu?: string;
37
+ // Never show in tab
38
+ hideTab?: boolean;
39
+ // Never show in menu
40
+ hideMenu?: boolean;
41
+ isLink?: boolean;
42
+ // only build for Menu
43
+ ignoreRoute?: boolean;
44
+ // Hide path for children
45
+ hidePathForChildren?: boolean;
46
+ }
47
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kengic/vue",
3
- "version": "0.21.4",
3
+ "version": "0.21.5-beta.1",
4
4
  "scripts": {
5
5
  "build": "npm run switch-node-version && rimraf dist && vue-tsc && vite build",
6
6
  "build:dev": "npm run switch-node-version && rimraf dist && vue-tsc && vite build --mode development",
@@ -32,6 +32,7 @@
32
32
  "vue": "3.2.43"
33
33
  },
34
34
  "dependencies": {
35
+ "@ant-design/colors": "6.0.0",
35
36
  "@ant-design/icons-vue": "6.1.0",
36
37
  "@iconify-icons/akar-icons": "1.2.19",
37
38
  "@iconify-icons/ant-design": "1.2.5",
@@ -41,10 +42,14 @@
41
42
  "@iconify-icons/ph": "1.2.5",
42
43
  "@iconify/vue": "4.1.1",
43
44
  "@kengic/pont": "1.2.11",
45
+ "@rys-fe/vite-plugin-theme": "0.8.6",
46
+ "@types/fs-extra": "9.0.13",
47
+ "@types/inquirer": "8.2.5",
44
48
  "@types/lodash-es": "4.17.9",
45
49
  "@types/node": "18.18.4",
46
50
  "@types/semver": "7.5.3",
47
51
  "@types/store": "2.0.3",
52
+ "@vitejs/plugin-legacy": "2.3.1",
48
53
  "@vitejs/plugin-vue": "3.2.0",
49
54
  "@vitejs/plugin-vue-jsx": "1.3.10",
50
55
  "@vueuse/core": "8.9.4",
@@ -53,19 +58,37 @@
53
58
  "axios": "0.26.1",
54
59
  "chalk": "4.1.2",
55
60
  "dayjs": "1.11.10",
61
+ "dotenv": "16.0.3",
56
62
  "filesize": "10.1.0",
63
+ "fs-extra": "10.1.0",
57
64
  "html-to-image": "1.11.11",
65
+ "inquirer": "8.2.5",
58
66
  "less": "4.1.3",
59
67
  "lodash-es": "4.17.21",
68
+ "picocolors": "1.0.0",
60
69
  "pinia": "2.0.12",
61
- "prettier": "2.8.8",
70
+ "prettier": "3.2.5",
62
71
  "rimraf": "3.0.2",
63
72
  "rollup": "2.79.1",
73
+ "rollup-plugin-visualizer": "5.8.3",
64
74
  "semver": "7.5.4",
65
75
  "store": "2.0.12",
66
76
  "tsx": "3.12.3",
67
77
  "typescript": "~4.8.4",
68
78
  "vite": "3.2.5",
79
+ "vite-plugin-compression": "0.5.1",
80
+ "vite-plugin-html": "3.2.0",
81
+ "vite-plugin-imagemin": "0.6.1",
82
+ "vite-plugin-mkcert": "1.10.1",
83
+ "vite-plugin-mock": "2.9.6",
84
+ "vite-plugin-optimize-persist": "0.1.2",
85
+ "vite-plugin-package-config": "0.1.1",
86
+ "vite-plugin-purge-icons": "0.8.2",
87
+ "vite-plugin-pwa": "0.12.8",
88
+ "vite-plugin-style-import": "2.0.0",
89
+ "vite-plugin-svg-icons": "2.0.1",
90
+ "vite-plugin-vue-setup-extend": "0.4.0",
91
+ "vite-plugin-windicss": "1.8.8",
69
92
  "vue": "3.2.43",
70
93
  "vue-router": "4.1.6",
71
94
  "vue-tsc": "1.8.27"