修改 nacos-federation 插件,实现 接口请求基地址从 配置中心获取,并注入到环境变量中

This commit is contained in:
编码猿
2025-09-23 03:26:10 +08:00
parent cbc2c25cf4
commit 84c4e8bdc7
22 changed files with 363 additions and 47 deletions

View File

@@ -1,4 +1,4 @@
import { Plugin, ResolvedConfig } from 'vite';
import { Plugin } from 'vite';
import { nacosServiceManage, RegisterOptions } from './nacosServiceManage';
export function nacosRegVitePlugin(options?: Partial<RegisterOptions>): Plugin {
@@ -6,11 +6,19 @@ export function nacosRegVitePlugin(options?: Partial<RegisterOptions>): Plugin {
return {
name: 'vite-plugin-nacos',
async configResolved(config: ResolvedConfig) {
async configResolved(config) {
// 安全检查:确保 config.define 存在
if (!config.define) {
// @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!,
@@ -33,6 +41,19 @@ export function nacosRegVitePlugin(options?: Partial<RegisterOptions>): Plugin {
// 初始化Nacos实例
nacosInstance = await nacosServiceManage.create(registerOptions);
const baseUrl = await nacosInstance.configClient.getConfig("baseUrl", "DEFAULT_GROUP")
const baseUrlConfig = baseUrl ? JSON.parse(baseUrl) : {};
console.log("[vite-plugin-nacos] 从Nacos配置发现获得接口地址: ", baseUrlConfig)
const customizeEnv: Record<string, string> = {};
Object.keys(baseUrlConfig).forEach(key => {
const envKey = `import.meta.env.VITE_${ key.toUpperCase() }`;
customizeEnv[envKey] = JSON.stringify(baseUrlConfig[key]);
});
// @ts-ignore
Object.assign(config.define, customizeEnv);
},
async closeBundle() {
// // 服务关闭时注销Nacos实例