refactor: 简化proxy配置
This commit is contained in:
parent
a610c1c6d0
commit
0247f3ebfa
@ -5,10 +5,7 @@ VITE_PUBLIC_PATH = '/'
|
||||
VITE_USE_MOCK = true
|
||||
|
||||
# 是否启用MOCK
|
||||
VITE_USE_PROXY = false
|
||||
|
||||
# 代理类型(跟启动和构建环境无关) 'dev' | 'test' | 'prod'
|
||||
VITE_PROXY_TYPE = 'dev'
|
||||
VITE_USE_PROXY = true
|
||||
|
||||
# base api
|
||||
VITE_BASE_API = '/api'
|
||||
VITE_BASE_API = '/api'
|
||||
|
@ -1,13 +0,0 @@
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
/**
|
||||
* * 此处定义的是全局常量,启动或打包后将添加到window中
|
||||
* https://vitejs.cn/config/#define
|
||||
*/
|
||||
|
||||
// 项目构建时间
|
||||
const _BUILD_TIME_ = JSON.stringify(dayjs().format('YYYY-MM-DD HH:mm:ss'))
|
||||
|
||||
export const viteDefine = {
|
||||
_BUILD_TIME_,
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
export * from './define'
|
||||
export * from './proxy'
|
@ -1,15 +0,0 @@
|
||||
import { getProxyConfig } from '../../settings'
|
||||
|
||||
export function createViteProxy(isUseProxy = true, proxyType) {
|
||||
if (!isUseProxy) return undefined
|
||||
|
||||
const proxyConfig = getProxyConfig(proxyType)
|
||||
const proxy = {
|
||||
[proxyConfig.prefix]: {
|
||||
target: proxyConfig.target,
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(new RegExp(`^${proxyConfig.prefix}`), ''),
|
||||
},
|
||||
}
|
||||
return proxy
|
||||
}
|
@ -1 +1,33 @@
|
||||
export const OUTPUT_DIR = 'dist'
|
||||
|
||||
export const PROXY_CONFIG = {
|
||||
/**
|
||||
* @desc 替换匹配值
|
||||
* @请求路径 http:localhost:3100/api/user
|
||||
* @转发路径 http://localhost:8080/user
|
||||
*/
|
||||
'/api': {
|
||||
target: 'http://localhost:8080',
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(new RegExp('^/api'), ''),
|
||||
},
|
||||
/**
|
||||
* @desc 不替换匹配值
|
||||
* @请求路径 http:localhost:3100/api/v2/user
|
||||
* @转发路径 http://localhost:8080/api/v2/user
|
||||
*/
|
||||
'/api/v2': {
|
||||
target: 'http://localhost:8080',
|
||||
changeOrigin: true,
|
||||
},
|
||||
/**
|
||||
* @desc 替换部分匹配值
|
||||
* @请求路径 http:localhost:3100/api/v3/user
|
||||
* @转发路径 http://localhost:8080/user
|
||||
*/
|
||||
'/api/v3': {
|
||||
target: 'http://localhost:8080',
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(new RegExp('^/api'), ''),
|
||||
},
|
||||
}
|
||||
|
@ -1,2 +1 @@
|
||||
export * from './theme.json'
|
||||
export * from './proxy-config'
|
||||
|
@ -1,18 +0,0 @@
|
||||
const proxyConfigMappings = {
|
||||
dev: {
|
||||
prefix: '/api',
|
||||
target: 'http://localhost:8080',
|
||||
},
|
||||
test: {
|
||||
prefix: '/api',
|
||||
target: 'http://localhost:8080',
|
||||
},
|
||||
prod: {
|
||||
prefix: '/api',
|
||||
target: 'http://localhost:8080',
|
||||
},
|
||||
}
|
||||
|
||||
export function getProxyConfig(envType = 'dev') {
|
||||
return proxyConfigMappings[envType]
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
|
||||
import { convertEnv, getSrcPath, getRootPath } from './build/utils'
|
||||
import { createViteProxy, viteDefine } from './build/config'
|
||||
import { createVitePlugins } from './build/plugin'
|
||||
import { OUTPUT_DIR } from './build/constant'
|
||||
import { OUTPUT_DIR, PROXY_CONFIG } from './build/constant'
|
||||
|
||||
export default defineConfig(({ command, mode }) => {
|
||||
const srcPath = getSrcPath()
|
||||
@ -12,7 +11,7 @@ export default defineConfig(({ command, mode }) => {
|
||||
|
||||
const env = loadEnv(mode, process.cwd())
|
||||
const viteEnv = convertEnv(env)
|
||||
const { VITE_PORT, VITE_PUBLIC_PATH, VITE_USE_PROXY, VITE_PROXY_TYPE } = viteEnv
|
||||
const { VITE_PORT, VITE_PUBLIC_PATH, VITE_USE_PROXY, VITE_BASE_API } = viteEnv
|
||||
|
||||
return {
|
||||
base: VITE_PUBLIC_PATH || '/',
|
||||
@ -22,17 +21,21 @@ export default defineConfig(({ command, mode }) => {
|
||||
'@': srcPath,
|
||||
},
|
||||
},
|
||||
define: viteDefine,
|
||||
plugins: createVitePlugins(viteEnv, isBuild),
|
||||
server: {
|
||||
host: '0.0.0.0',
|
||||
port: VITE_PORT,
|
||||
open: false,
|
||||
proxy: createViteProxy(VITE_USE_PROXY, VITE_PROXY_TYPE),
|
||||
proxy: VITE_USE_PROXY
|
||||
? {
|
||||
[VITE_BASE_API]: PROXY_CONFIG[VITE_BASE_API],
|
||||
'/api/v2': PROXY_CONFIG['/api/v2'],
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
build: {
|
||||
target: 'es2015',
|
||||
outDir: OUTPUT_DIR,
|
||||
outDir: OUTPUT_DIR || 'dist',
|
||||
reportCompressedSize: false, // 启用/禁用 gzip 压缩大小报告
|
||||
chunkSizeWarningLimit: 1024, // chunk 大小警告的限制(单位kb)
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user