feat(port): 实现智能端口管理系统
- 新增端口管理器类,支持端口分配、验证和缓存管理 - 实现环境优先级策略,根据环境自动选择合适的端口范围 - 集成租户识别系统,为每个租户分配独立端口 - 添加端口分配结果统计和历史记录查询功能 - 优化端口缓存机制,自动清理过期绑定
This commit is contained in:
@@ -9,8 +9,47 @@ import { resolve } from 'path';
|
||||
import { visualizer } from 'rollup-plugin-visualizer';
|
||||
import { splitVendorChunkPlugin } from 'vite';
|
||||
|
||||
// 简化的智能端口管理(避免构建时模块解析问题)
|
||||
function getSmartPort() {
|
||||
try {
|
||||
// 从环境变量获取基础配置
|
||||
const basePort = parseInt(process.env.VITE_BASE_PORT || '3000');
|
||||
const tenantId = process.env.VITE_TENANT_ID || '10258';
|
||||
const environment = process.env.NODE_ENV || 'development';
|
||||
|
||||
// 简化的端口计算
|
||||
let recommendedPort = basePort;
|
||||
|
||||
if (environment === 'development') {
|
||||
// 开发环境:基础端口 + 租户偏移
|
||||
const tenantOffset = (parseInt(tenantId) % 1000) * 10;
|
||||
recommendedPort = basePort + tenantOffset;
|
||||
} else if (environment === 'test') {
|
||||
recommendedPort = basePort + 1000;
|
||||
} else if (environment === 'production') {
|
||||
recommendedPort = 8080; // 生产环境使用标准端口
|
||||
}
|
||||
|
||||
console.log('🎯 智能端口计算:', {
|
||||
environment,
|
||||
tenantId,
|
||||
basePort,
|
||||
recommendedPort
|
||||
});
|
||||
|
||||
return recommendedPort;
|
||||
} catch (error) {
|
||||
console.warn('⚠️ 端口计算失败,使用默认端口 3000:', error);
|
||||
return 3000;
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig(({ command }) => {
|
||||
const isBuild = command === 'build';
|
||||
|
||||
// 智能端口配置(仅在开发模式下)
|
||||
const smartPort = !isBuild ? getSmartPort() : undefined;
|
||||
|
||||
return {
|
||||
// 在这里增加 base 写子路径
|
||||
base: '/',
|
||||
@@ -20,11 +59,42 @@ export default defineConfig(({ command }) => {
|
||||
'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
|
||||
}
|
||||
},
|
||||
// server: {
|
||||
// proxy: {
|
||||
// '/api': 'https://server.websoft.top'
|
||||
// }
|
||||
// },
|
||||
// 智能服务器配置
|
||||
server: {
|
||||
port: smartPort || 3000,
|
||||
host: '0.0.0.0', // 允许外部访问
|
||||
open: true, // 自动打开浏览器
|
||||
cors: true, // 启用 CORS
|
||||
// 代理配置
|
||||
proxy: {
|
||||
'/api': {
|
||||
target: process.env.VITE_API_URL || 'https://server.websoft.top',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
configure: (proxy, _options) => {
|
||||
proxy.on('error', (err, _req, _res) => {
|
||||
console.log('proxy error', err);
|
||||
});
|
||||
proxy.on('proxyReq', (proxyReq, req, _res) => {
|
||||
console.log('Sending Request to the Target:', req.method, req.url);
|
||||
});
|
||||
proxy.on('proxyRes', (proxyRes, req, _res) => {
|
||||
console.log('Received Response from the Target:', proxyRes.statusCode, req.url);
|
||||
});
|
||||
},
|
||||
}
|
||||
},
|
||||
// 端口冲突时的处理
|
||||
strictPort: false, // 允许自动选择其他端口
|
||||
},
|
||||
// 预览服务器配置(用于生产构建预览)
|
||||
preview: {
|
||||
port: smartPort ? smartPort + 1000 : 4173,
|
||||
host: '0.0.0.0',
|
||||
open: true,
|
||||
cors: true,
|
||||
strictPort: false,
|
||||
},
|
||||
plugins: [
|
||||
vue({
|
||||
script: {
|
||||
|
||||
Reference in New Issue
Block a user