From c5f916757ebb7d3cdc1e6612de8fe16d0b6e3233 Mon Sep 17 00:00:00 2001 From: yangsy Date: Wed, 5 Nov 2025 15:01:29 +0800 Subject: [PATCH] fix: update vite for stomp proxy exception --- package.json | 4 +- pnpm-lock.yaml | 87 +++++++++++++++---------------- vite.config.ts | 135 +++++++++++++++++++++++++++++-------------------- 3 files changed, 127 insertions(+), 99 deletions(-) diff --git a/package.json b/package.json index 2077ba4..4aa877f 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "format": "prettier --write src/" }, "dependencies": { - "@stomp/stompjs": "^7.1.1", + "@stomp/stompjs": "^7.2.1", "@tanstack/vue-query": "^5.83.1", "@tanstack/vue-query-devtools": "^5.84.0", "@vueuse/core": "^13.6.0", @@ -56,7 +56,7 @@ "prettier": "3.6.2", "tsx": "^4.20.5", "typescript": "~5.8.0", - "vite": "^7.0.6", + "vite": "^7.1.12", "vite-plugin-vue-devtools": "^8.0.0", "vue-tsc": "^3.0.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 855755b..1539df1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@stomp/stompjs': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.2.1 + version: 7.2.1 '@tanstack/vue-query': specifier: ^5.83.1 version: 5.83.1(vue@3.5.18(typescript@5.8.3)) @@ -89,10 +89,10 @@ importers: version: 0.13.0 '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.1(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) + version: 6.0.1(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) '@vitejs/plugin-vue-jsx': specifier: ^5.0.1 - version: 5.0.1(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) + version: 5.0.1(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2) @@ -124,11 +124,11 @@ importers: specifier: ~5.8.0 version: 5.8.3 vite: - specifier: ^7.0.6 - version: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + specifier: ^7.1.12 + version: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) vite-plugin-vue-devtools: specifier: ^8.0.0 - version: 8.0.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) + version: 8.0.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) vue-tsc: specifier: ^3.0.4 version: 3.0.5(typescript@5.8.3) @@ -739,8 +739,8 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@stomp/stompjs@7.1.1': - resolution: {integrity: sha512-chcDs6YkAnKp1FqzwhGvh3i7v0+/ytzqWdKYw6XzINEKAzke/iD00dNgFPWSZEqktHOK+C1gSzXhLkLbARIaZw==} + '@stomp/stompjs@7.2.1': + resolution: {integrity: sha512-DLd/WeicnHS5SsWWSk3x6/pcivqchNaEvg9UEGVqAcfYEBVmS9D6980ckXjTtfpXLjdLDsd96M7IuX4w7nzq5g==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} @@ -1388,8 +1388,9 @@ packages: fd-slicer2@1.2.0: resolution: {integrity: sha512-3lBUNUckhMZduCc4g+Pw4Ve16LD9vpX9b8qUkkKq2mgDRLYWzblszZH2luADnJqjJe+cypngjCuKRm/IW12rRw==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2025,8 +2026,8 @@ packages: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} to-buffer@1.2.1: @@ -2137,8 +2138,8 @@ packages: peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - vite@7.1.2: - resolution: {integrity: sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==} + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2797,7 +2798,7 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@stomp/stompjs@7.1.1': {} + '@stomp/stompjs@7.2.1': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: @@ -2944,21 +2945,21 @@ snapshots: '@vicons/ionicons5@0.13.0': {} - '@vitejs/plugin-vue-jsx@5.0.1(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': + '@vitejs/plugin-vue-jsx@5.0.1(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.0) '@rolldown/pluginutils': 1.0.0-beta.32 '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.0) - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) vue: 3.5.18(typescript@5.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.1(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': + '@vitejs/plugin-vue@6.0.1(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) vue: 3.5.18(typescript@5.8.3) '@volar/language-core@2.4.22': @@ -3043,14 +3044,14 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.7 - '@vue/devtools-core@8.0.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': + '@vue/devtools-core@8.0.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3))': dependencies: '@vue/devtools-kit': 8.0.0 '@vue/devtools-shared': 8.0.0 mitt: 3.0.1 nanoid: 5.1.5 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) + vite-hot-client: 2.1.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) vue: 3.5.18(typescript@5.8.3) transitivePeerDependencies: - vite @@ -3577,7 +3578,7 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -4140,9 +4141,9 @@ snapshots: to-buffer: 1.2.1 xtend: 4.0.2 - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 to-buffer@1.2.1: @@ -4221,17 +4222,17 @@ snapshots: evtd: 0.2.4 vue: 3.5.18(typescript@5.8.3) - vite-dev-rpc@1.1.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): + vite-dev-rpc@1.1.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): dependencies: birpc: 2.5.0 - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) - vite-hot-client: 2.1.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite-hot-client: 2.1.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) - vite-hot-client@2.1.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): + vite-hot-client@2.1.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): dependencies: - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) - vite-plugin-inspect@11.3.2(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): + vite-plugin-inspect@11.3.2(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): dependencies: ansis: 4.1.0 debug: 4.4.1 @@ -4241,27 +4242,27 @@ snapshots: perfect-debounce: 1.0.0 sirv: 3.0.1 unplugin-utils: 0.2.5 - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) - vite-dev-rpc: 1.1.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite-dev-rpc: 1.1.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@8.0.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)): + vite-plugin-vue-devtools@8.0.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)): dependencies: - '@vue/devtools-core': 8.0.0(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) + '@vue/devtools-core': 8.0.0(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5))(vue@3.5.18(typescript@5.8.3)) '@vue/devtools-kit': 8.0.0 '@vue/devtools-shared': 8.0.0 execa: 9.6.0 sirv: 3.0.1 - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) - vite-plugin-inspect: 11.3.2(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) - vite-plugin-vue-inspector: 5.3.2(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite-plugin-inspect: 11.3.2(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) + vite-plugin-vue-inspector: 5.3.2(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)) transitivePeerDependencies: - '@nuxt/kit' - supports-color - vue - vite-plugin-vue-inspector@5.3.2(vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): + vite-plugin-vue-inspector@5.3.2(vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5)): dependencies: '@babel/core': 7.28.0 '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.0) @@ -4272,18 +4273,18 @@ snapshots: '@vue/compiler-dom': 3.5.18 kolorist: 1.8.0 magic-string: 0.30.17 - vite: 7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) + vite: 7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5) transitivePeerDependencies: - supports-color - vite@7.1.2(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5): + vite@7.1.12(@types/node@22.17.1)(jiti@2.5.1)(sass@1.90.0)(tsx@4.20.5): dependencies: esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.46.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.17.1 fsevents: 2.3.3 diff --git a/vite.config.ts b/vite.config.ts index 76f26be..f9545ad 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,87 +5,114 @@ import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import vueDevTools from 'vite-plugin-vue-devtools'; -const line10ApiProxyList: [string, string][] = [ - ['/minio', 'http://10.18.128.10:9000'], +type ProxyItem = { + key: string; + target: string; + rewrite?: [string, string]; +}; - ['/api', 'http://10.18.128.10:18760/api'], +const line10ApiProxyList: ProxyItem[] = [ + { key: '/minio', target: 'http://10.18.128.10:9000', rewrite: ['/minio', ''] }, - ['/1075/api', 'http://10.18.128.10:18760/api'], + { key: '/api', target: 'http://10.18.128.10:18760' }, - ['/1001/api', 'http://10.18.129.10:18760/api'], - ['/1002/api', 'http://10.18.131.10:18760/api'], - ['/1003/api', 'http://10.18.133.10:18760/api'], - ['/1004/api', 'http://10.18.135.10:18760/api'], - ['/1005/api', 'http://10.18.137.10:18760/api'], - ['/1006/api', 'http://10.18.139.10:18760/api'], - ['/1007/api', 'http://10.18.141.10:18760/api'], - ['/1008/api', 'http://10.18.143.10:18760/api'], - ['/1009/api', 'http://10.18.145.10:18760/api'], - ['/1010/api', 'http://10.18.147.10:18760/api'], + { key: '/1075/api', target: 'http://10.18.128.10:18760', rewrite: ['/1075/api', '/api'] }, - ['/1011/api', 'http://10.18.149.10:18760/api'], - ['/1012/api', 'http://10.18.151.10:18760/api'], - ['/1013/api', 'http://10.18.153.10:18760/api'], - ['/1014/api', 'http://10.18.155.10:18760/api'], - ['/1015/api', 'http://10.18.157.10:18760/api'], - ['/1016/api', 'http://10.18.159.10:18760/api'], - ['/1017/api', 'http://10.18.161.10:18760/api'], - ['/1018/api', 'http://10.18.163.10:18760/api'], - ['/1019/api', 'http://10.18.165.10:18760/api'], - ['/1020/api', 'http://10.18.167.10:18760/api'], + { key: '/1001/api', target: 'http://10.18.129.10:18760', rewrite: ['/1001/api', '/api'] }, + { key: '/1002/api', target: 'http://10.18.131.10:18760', rewrite: ['/1002/api', '/api'] }, + { key: '/1003/api', target: 'http://10.18.133.10:18760', rewrite: ['/1003/api', '/api'] }, + { key: '/1004/api', target: 'http://10.18.135.10:18760', rewrite: ['/1004/api', '/api'] }, + { key: '/1005/api', target: 'http://10.18.137.10:18760', rewrite: ['/1005/api', '/api'] }, + { key: '/1006/api', target: 'http://10.18.139.10:18760', rewrite: ['/1006/api', '/api'] }, + { key: '/1007/api', target: 'http://10.18.141.10:18760', rewrite: ['/1007/api', '/api'] }, + { key: '/1008/api', target: 'http://10.18.143.10:18760', rewrite: ['/1008/api', '/api'] }, + { key: '/1009/api', target: 'http://10.18.145.10:18760', rewrite: ['/1009/api', '/api'] }, + { key: '/1010/api', target: 'http://10.18.147.10:18760', rewrite: ['/1010/api', '/api'] }, - ['/1021/api', 'http://10.18.169.10:18760/api'], - ['/1022/api', 'http://10.18.171.10:18760/api'], - ['/1023/api', 'http://10.18.173.10:18760/api'], - ['/1024/api', 'http://10.18.175.10:18760/api'], - ['/1025/api', 'http://10.18.177.10:18760/api'], - ['/1026/api', 'http://10.18.179.10:18760/api'], - ['/1027/api', 'http://10.18.181.10:18760/api'], - ['/1028/api', 'http://10.18.183.10:18760/api'], - ['/1029/api', 'http://10.18.185.10:18760/api'], - ['/1030/api', 'http://10.18.187.10:18760/api'], + { key: '/1011/api', target: 'http://10.18.149.10:18760', rewrite: ['/1011/api', '/api'] }, + { key: '/1012/api', target: 'http://10.18.151.10:18760', rewrite: ['/1012/api', '/api'] }, + { key: '/1013/api', target: 'http://10.18.153.10:18760', rewrite: ['/1013/api', '/api'] }, + { key: '/1014/api', target: 'http://10.18.155.10:18760', rewrite: ['/1014/api', '/api'] }, + { key: '/1015/api', target: 'http://10.18.157.10:18760', rewrite: ['/1015/api', '/api'] }, + { key: '/1016/api', target: 'http://10.18.159.10:18760', rewrite: ['/1016/api', '/api'] }, + { key: '/1017/api', target: 'http://10.18.161.10:18760', rewrite: ['/1017/api', '/api'] }, + { key: '/1018/api', target: 'http://10.18.163.10:18760', rewrite: ['/1018/api', '/api'] }, + { key: '/1019/api', target: 'http://10.18.165.10:18760', rewrite: ['/1019/api', '/api'] }, + { key: '/1020/api', target: 'http://10.18.167.10:18760', rewrite: ['/1020/api', '/api'] }, - ['/1031/api', 'http://10.18.189.10:18760/api'], + { key: '/1021/api', target: 'http://10.18.169.10:18760', rewrite: ['/1021/api', '/api'] }, + { key: '/1022/api', target: 'http://10.18.171.10:18760', rewrite: ['/1022/api', '/api'] }, + { key: '/1023/api', target: 'http://10.18.173.10:18760', rewrite: ['/1023/api', '/api'] }, + { key: '/1024/api', target: 'http://10.18.175.10:18760', rewrite: ['/1024/api', '/api'] }, + { key: '/1025/api', target: 'http://10.18.177.10:18760', rewrite: ['/1025/api', '/api'] }, + { key: '/1026/api', target: 'http://10.18.179.10:18760', rewrite: ['/1026/api', '/api'] }, + { key: '/1027/api', target: 'http://10.18.181.10:18760', rewrite: ['/1027/api', '/api'] }, + { key: '/1028/api', target: 'http://10.18.183.10:18760', rewrite: ['/1028/api', '/api'] }, + { key: '/1029/api', target: 'http://10.18.185.10:18760', rewrite: ['/1029/api', '/api'] }, + { key: '/1030/api', target: 'http://10.18.187.10:18760', rewrite: ['/1030/api', '/api'] }, + + { key: '/1031/api', target: 'http://10.18.189.10:18760', rewrite: ['/1031/api', '/api'] }, ]; -const apiProxyList: [string, string][] = [ +const apiProxyList: ProxyItem[] = [ // ...line10ApiProxyList, ]; -const wsProxyList: [string, string][] = [ +const wsProxyList: ProxyItem[] = [ // - ['/ws', 'ws://10.18.128.10:18103/ws'], + { key: '/ws', target: 'ws://10.18.128.10:18103' }, ]; // https://vite.dev/config/ export default defineConfig((/* { command, mode } */) => { const viteProxy: Record = {}; + + const getRewriteFn = (proxyItem: ProxyItem): ProxyOptions['rewrite'] => { + const { key, rewrite } = proxyItem; + const [rewriteFrom, rewriteTo] = rewrite ?? [key, key]; + return (path) => { + console.log(new Date().toLocaleString()); + console.log(`请求路径: ${path}`); + if (!rewrite) return path; + return path.replace(new RegExp(`^${rewriteFrom}`), `${rewriteTo}`); + }; + }; + + const getConfigureFn = (opts?: { ws?: boolean }): ProxyOptions['configure'] => { + const { ws } = opts ?? {}; + if (!ws) { + return (proxy, options) => { + const { target } = options; + proxy.on('proxyReq', (_, req) => { + console.log(`将代理到: ${target}${req.url}`); + }); + }; + } else { + return (proxy, options) => { + const { target } = options; + proxy.on('proxyReqWs', (_, req) => { + console.log(`将代理到: ${target}${req.url}`); + }); + }; + } + }; + apiProxyList.forEach((apiProxy) => { - const [key, target] = apiProxy; + const { key, target } = apiProxy; viteProxy[key] = { target, changeOrigin: true, - rewrite: (path) => { - console.log(new Date().toLocaleString()); - console.log(`请求路径: ${path}`); - const rewrittenPath = path.replace(new RegExp(`^${key}`), ''); - console.log(`将代理到: ${target}${rewrittenPath}`); - return rewrittenPath; - }, + rewrite: getRewriteFn(apiProxy), + configure: getConfigureFn(), }; }); wsProxyList.forEach((wsProxy) => { - const [key, target] = wsProxy; + const { key, target } = wsProxy; viteProxy[key] = { target, changeOrigin: true, ws: true, - rewrite: (path) => { - console.log(new Date().toLocaleString()); - console.log(`请求路径: ${path}`); - const rewrittenPath = path.replace(new RegExp(`^${key}`), ''); - console.log(`将代理到: ${target}${rewrittenPath}`); - return rewrittenPath; - }, + rewrite: getRewriteFn(wsProxy), + configure: getConfigureFn({ ws: true }), }; });