import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vueJsx from '@vue3-oop/plugin-vue-jsx' import federation from '@originjs/vite-plugin-federation'; import { nacosServiceManage } from "nacos-federation"; export default defineConfig(async () => { const client = new nacosServiceManage({ serverList: '192.168.31.100:8848', serviceName: 'main-app', port: 1300 }) const productUrl = await client.find("app-product") const sharedUrl = await client.find("app-shared") return { server: { port: 1300, host: '0.0.0.0', strictPort: true, }, plugins: [ vueJsx(), federation({ name: 'mainApp', // 主应用模块名(联邦模块需通过此名引用) remotes: { // 配置远程联邦模块地址(开发/生产需对应) product: `${ productUrl }/assets/remoteEntry.js`, shared: `${ sharedUrl }/assets/remoteEntry.js` }, shared: { vue: { requiredVersion: '^3.5.18' }, 'vue-router': { requiredVersion: '^4.0.6' }, pinia: { requiredVersion: '^3.0.3' } } }) ], build: { target: 'esnext', minify: false, cssCodeSplit: true, rollupOptions: { output: { minifyInternalExports: false } } }, resolve: { alias: { '@': fileURLToPath(new URL('./src/app/', import.meta.url)), '@shared': fileURLToPath(new URL('./src/shared/', import.meta.url)), '@features': fileURLToPath(new URL('./src/features/', import.meta.url)), '@domains': fileURLToPath(new URL('./src/domains/', import.meta.url)) }, }, } })