From ac5f5448190e4a6aa2b5a79c43530df063450082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BC=96=E7=A0=81=E7=8C=BF?= Date: Tue, 23 Sep 2025 12:05:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A7=E5=88=B6=E5=8F=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=EF=BC=8C=E6=96=B9=E4=BE=BF=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=84=E7=A7=8D=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front-end/nacos-federation/package.json | 2 +- .../src/nacosServiceManage.ts | 4 +- .../nacos-federation/src/vite-plugin-nacos.ts | 65 ++++++++++++++++--- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/front-end/nacos-federation/package.json b/front-end/nacos-federation/package.json index 878acac..729823b 100644 --- a/front-end/nacos-federation/package.json +++ b/front-end/nacos-federation/package.json @@ -8,7 +8,7 @@ "dist" ], "scripts": { - "build": "tsc", + "build": "tsc -w", "prepublishOnly": "npm run build" }, "dependencies": { diff --git a/front-end/nacos-federation/src/nacosServiceManage.ts b/front-end/nacos-federation/src/nacosServiceManage.ts index 17ed9b1..a085a29 100644 --- a/front-end/nacos-federation/src/nacosServiceManage.ts +++ b/front-end/nacos-federation/src/nacosServiceManage.ts @@ -113,7 +113,9 @@ export class nacosServiceManage { const ip = getLocalIP(); // @ts-ignore await this.nacosClient.registerInstance(serviceName, { port, ip }) - logger.log(`[nacos-federation] 服务 ${ serviceName } 已注册:${ formatServiceUrl(ip, port) }`); + logger.log() + logger.log("[nacos-federation] 服务注册:") + logger.log(`服务 ${ serviceName } 已注册到配置中心:${ formatServiceUrl(ip, port) }`); } diff --git a/front-end/nacos-federation/src/vite-plugin-nacos.ts b/front-end/nacos-federation/src/vite-plugin-nacos.ts index 3b8c145..6ec371b 100644 --- a/front-end/nacos-federation/src/vite-plugin-nacos.ts +++ b/front-end/nacos-federation/src/vite-plugin-nacos.ts @@ -9,8 +9,14 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { async config(userConfig: UserConfig, { mode }) { // 修改base,增加资源来源地址,修复资源错误加载的问题 const env = loadEnv(mode, process.cwd()); + let baseUrl = "" + // 主模块 main-app 不加 base 前缀,其他模块都加, + // 也是为了命中 traefik 路由代理 + if (env.VITE_SERVER_NAME != "main-app") { + baseUrl = `${ env.VITE_SERVER_NAME }/` + } return { - base: `${ env.VITE_PREFIX }${ env.VITE_TRAEFIK_ADDRESS }/${ env.VITE_SERVER_NAME }/`, + base: `${ env.VITE_PREFIX }${ env.VITE_TRAEFIK_ADDRESS }/${ baseUrl }`, } }, async configResolved(config) { @@ -20,12 +26,9 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { // @ts-ignore config.define = {}; } - console.log("config.define: ", config.define) // 从环境变量和配置中获取Nacos配置(环境变量优先级更高) const env = config.env; - console.log("you env: ", env) - const registerOptions: RegisterOptions = { serverList: env.VITE_NACOS_ADDRESS || options?.serverList!, serviceName: env.VITE_SERVER_NAME || options?.serviceName!, @@ -35,14 +38,14 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { // 验证必要配置 if (!registerOptions.serverList) { - throw new Error('[vite-plugin-nacos] 缺少Nacos服务列表配置,请设置VITE_NACOS_ADDRESS环境变量或插件选项'); + throw new Error('[nacos-federation] 缺少Nacos服务列表配置,请设置VITE_NACOS_ADDRESS环境变量或插件选项'); } if (!registerOptions.serviceName) { - throw new Error('[vite-plugin-nacos] 缺少服务名称配置,请设置VITE_SERVER_NAME环境变量或插件选项'); + throw new Error('[nacos-federation] 缺少服务名称配置,请设置VITE_SERVER_NAME环境变量或插件选项'); } if (!registerOptions.port) { - throw new Error('[vite-plugin-nacos] 缺少服务端口配置,请设置VITE_SERVER_PORT环境变量或插件选项'); + throw new Error('[nacos-federation] 缺少服务端口配置,请设置VITE_SERVER_PORT环境变量或插件选项'); } // 初始化Nacos实例 @@ -50,7 +53,11 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { const baseUrl = await nacosInstance.configClient.getConfig("baseUrl", "DEFAULT_GROUP") const baseUrlConfig = baseUrl ? JSON.parse(baseUrl) : {}; - console.log("[vite-plugin-nacos] 从Nacos配置发现获得接口地址: ", baseUrlConfig) + + console.log() + console.log("[nacos-federation] 配置发现:") + console.log("从Nacos配置中心,获得接口地址: ", baseUrlConfig) + console.log() const customizeEnv: Record = {}; @@ -58,9 +65,9 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { const envKey = `import.meta.env.VITE_${ key.toUpperCase() }`; customizeEnv[envKey] = JSON.stringify(baseUrlConfig[key]); }); - // @ts-ignore Object.assign(config.define, customizeEnv); + Logs(env) }, async closeBundle() { // // 服务关闭时注销Nacos实例 @@ -71,3 +78,43 @@ export function nacosRegVitePlugin(options?: Partial): Plugin { } } +function Logs(env: Record) { + const moduleName = [] + for (const key in env) { + if (key.includes("VITE_MODEL_")) { + moduleName.push(env[key]); + } + } + moduleName.length == 0 ? moduleName.push('无') : null + console.log(dedentTemplateString(` + 微服务工具: + -> 1:Naco 配置中心: ${ env.VITE_PREFIX }${ env.VITE_NACOS_ADDRESS } + -> 2:Traefik 网关: ${ env.VITE_PREFIX }${ env.VITE_TRAEFIK_ADDRESS } + + 微前端信息: + -> 主模块:${ env.VITE_SERVER_NAME } + + 调用模块: + -> [ ${ moduleName } ] + `)) + console.log() +} + +function dedentTemplateString(str: string) { + // 分割成行 + const lines = str.split('\n'); + + // 移除首尾空行 + if (lines[0].trim() === '') lines.shift(); + if (lines[lines.length - 1].trim() === '') lines.pop(); + + // 找到最小缩进量 + const minIndent = lines.reduce((min, line) => { + if (line.trim() === '') return min; // 跳过空行 + const indent = line.match(/^\s*/)[0].length; + return indent < min ? indent : min; + }, Infinity); + + // 移除统一缩进 + return lines.map(line => line.slice(minIndent)).join('\n'); +} \ No newline at end of file