From f24d81ece69fed7e2305ea0795e9aa8cf49d3504 Mon Sep 17 00:00:00 2001 From: guoapeng Date: Sat, 12 Jul 2025 19:41:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9C=AC=E5=9C=B0=E5=95=8A=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E5=9C=B0=E5=9D=80=E8=B7=9F=E9=9A=8F=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.dev | 3 +- .env.pre | 3 +- .env.prod | 3 +- .env.test | 3 +- vite.config.ts | 161 +++++++++++++++++++++++++++++---------------------------- 5 files changed, 91 insertions(+), 82 deletions(-) diff --git a/.env.dev b/.env.dev index 4d4fdee..4f2f01e 100644 --- a/.env.dev +++ b/.env.dev @@ -3,4 +3,5 @@ FT_NODE_ENV=dev FT_WS_URL=ws://192.168.1.199:8080/ws -FT_PROXY=http://192.168.1.199:8080 \ No newline at end of file +FT_PROXY=http://192.168.100.168:8080 +FT_API_BASE=/api \ No newline at end of file diff --git a/.env.pre b/.env.pre index 6485b6d..b166b46 100644 --- a/.env.pre +++ b/.env.pre @@ -3,4 +3,5 @@ FT_NODE_ENV=pre FT_WS_URL=ws://192.168.1.140:8080/ws -FT_PROXY=http://192.168.1.140 \ No newline at end of file +FT_PROXY=http://192.168.100.168:8080 +FT_API_BASE=/api \ No newline at end of file diff --git a/.env.prod b/.env.prod index cb7d259..89bf5eb 100644 --- a/.env.prod +++ b/.env.prod @@ -3,4 +3,5 @@ FT_NODE_ENV=prod FT_WS_URL=ws://192.168.100.168:8080/ws -FT_PROXY=http://127.0.0.1:8080 \ No newline at end of file +FT_PROXY=http://192.168.100.168:8080 +FT_API_BASE=/api \ No newline at end of file diff --git a/.env.test b/.env.test index 37ec341..9eefe7d 100644 --- a/.env.test +++ b/.env.test @@ -3,4 +3,5 @@ FT_NODE_ENV=test FT_WS_URL=ws://192.168.100.168:8080/ws -FT_PROXY=http://192.168.1.200:8080 \ No newline at end of file +FT_PROXY=http://192.168.100.168:8080 +FT_API_BASE=/api \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 9f1a968..1975ea1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,94 +2,99 @@ import { resolve } from 'node:path' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' -import { defineConfig } from 'vite' +import { defineConfig, loadEnv } from 'vite' import viteCompression from 'vite-plugin-compression' import eslintPlugin from 'vite-plugin-eslint' import packageJson from './package.json' const Timestamp = new Date().getTime() -export default defineConfig({ - define: { - __APP_VERSION__: JSON.stringify(packageJson.version), - }, - base: './', - envPrefix: 'FT_', - esbuild: { - drop: process.env.NODE_ENV === 'production' ? ['console'] : [], - }, - build: { - sourcemap: false, - outDir: `dist-v${packageJson.version}`, - rollupOptions: { - output: { - manualChunks(id) { - if (id.includes('node_modules')) { - return id.toString().split('node_modules/')[1].split('/')[0].toString() - } - }, - chunkFileNames: (chunkInfo) => { - const facadeModuleId = chunkInfo.facadeModuleId - ? chunkInfo.facadeModuleId.split('/') - : [] - const fileName = facadeModuleId.slice(-2)[0] || '[name]' - return `js/${fileName}/[name].[hash].${Timestamp}.js` + +export default defineConfig(({ mode }) => { + // eslint-disable-next-line node/prefer-global/process + const env = loadEnv(mode, process.cwd(), 'FT_') + return { + define: { + __APP_VERSION__: JSON.stringify(packageJson.version), + }, + base: './', + envPrefix: 'FT_', + esbuild: { + // eslint-disable-next-line node/prefer-global/process + drop: process.env.NODE_ENV === 'production' ? ['console'] : [], + }, + build: { + sourcemap: false, + outDir: `dist-v${packageJson.version}`, + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes('node_modules')) { + return id.toString().split('node_modules/')[1].split('/')[0].toString() + } + }, + chunkFileNames: (chunkInfo) => { + const facadeModuleId = chunkInfo.facadeModuleId + ? chunkInfo.facadeModuleId.split('/') + : [] + const fileName = facadeModuleId.slice(-2)[0] || '[name]' + return `js/${fileName}/[name].[hash].${Timestamp}.js` + }, }, }, }, - }, - plugins: [ - vue(), - AutoImport({ - imports: ['vue', 'vue-router', { - vue: ['withModifiers'], - }, { - from: 'element-plus/es', - imports: ['TabPaneName'], - type: true, - }], - dts: true, - eslintrc: { - enabled: true, + plugins: [ + vue(), + AutoImport({ + imports: ['vue', 'vue-router', { + vue: ['withModifiers'], + }, { + from: 'element-plus/es', + imports: ['TabPaneName'], + type: true, + }], + dts: true, + eslintrc: { + enabled: true, + }, + resolvers: [ElementPlusResolver({ importStyle: 'sass' })], + }), + eslintPlugin({ + cache: false, // 禁用缓存,以确保每次修改后都能及时生效 + }), + viteCompression({ + verbose: true, + disable: false, + threshold: 10240, + algorithm: 'gzip', + ext: '.gz', + }), + ], + resolve: { + alias: { + '@': resolve(__dirname, './src'), + 'apis': resolve(__dirname, 'src/apis'), + 'assets': resolve(__dirname, 'src/assets'), + 'components': resolve(__dirname, 'src/components'), + 'hooks': resolve(__dirname, 'src/hooks'), + 'libs': resolve(__dirname, 'src/libs'), + 'stores': resolve(__dirname, 'src/stores'), + 'views': resolve(__dirname, 'src/views'), }, - resolvers: [ElementPlusResolver({ importStyle: 'sass' })], - }), - eslintPlugin({ - cache: false, // 禁用缓存,以确保每次修改后都能及时生效 - }), - viteCompression({ - verbose: true, - disable: false, - threshold: 10240, - algorithm: 'gzip', - ext: '.gz', - }), - ], - resolve: { - alias: { - '@': resolve(__dirname, './src'), - 'apis': resolve(__dirname, 'src/apis'), - 'assets': resolve(__dirname, 'src/assets'), - 'components': resolve(__dirname, 'src/components'), - 'hooks': resolve(__dirname, 'src/hooks'), - 'libs': resolve(__dirname, 'src/libs'), - 'stores': resolve(__dirname, 'src/stores'), - 'views': resolve(__dirname, 'src/views'), }, - }, - // 本地化配置 - server: { - // open: true, - hmr: true, - port: 3000, - host: '0.0.0.0', - proxy: { - '/api': { - target: '192.168.100.168:8080', - // target: 'http://192.168.1.200:8080', - // secure: false, - changeOrigin: true, // 是否跨域 - rewrite: path => path.replace(/^\/api/, 'api'), + // 本地化配置 + server: { + // open: true, + hmr: true, + port: 3000, + host: '0.0.0.0', + proxy: { + [env.FT_API_BASE]: { + target: env.FT_PROXY, + // secure: false, + changeOrigin: true, // 是否跨域 + rewrite: path => path.replace(new RegExp(`^${env.FT_API_BASE}`), 'api'), + }, }, }, - }, + } })