70 lines
2.8 KiB
TypeScript
70 lines
2.8 KiB
TypeScript
import path from 'path'
|
||
|
||
import { defineConfig, loadEnv } from 'vite'
|
||
import vueJsx from '@vue3-oop/plugin-vue-jsx'
|
||
import federation from '@originjs/vite-plugin-federation';
|
||
import { nacosRegVitePlugin } from "nacos-federation";
|
||
|
||
export default defineConfig(async ({ mode }) => {
|
||
const env = loadEnv(mode, process.cwd());
|
||
// const nacos = await nacosServiceManage.create({
|
||
// serverList: env.VITE_NACOS_ADDRESS,
|
||
// serviceName: env.VITE_SERVER_NAME,
|
||
// port: Number(env.VITE_SERVER_PORT)
|
||
// });
|
||
// const productUrl = await nacos.find(env.VITE_MODEL_PRODUCT_NAME)
|
||
// const sharedUrl = await nacos.find(env.VITE_MODEL_SHARED_NAME)
|
||
|
||
return {
|
||
server: {
|
||
port: Number(env.VITE_SERVER_PORT),
|
||
host: '0.0.0.0',
|
||
strictPort: true,
|
||
},
|
||
plugins: [
|
||
nacosRegVitePlugin(),
|
||
vueJsx(),
|
||
federation({
|
||
name: env.VITE_SERVER_NAME,
|
||
remotes: {
|
||
// 【弃用】基于 Nacos 服务发现获取 微前端模块的地址 192.168.31.101:1301
|
||
// product: `${ productUrl }/assets/remoteEntry.js`,
|
||
// shared: `${ sharedUrl }/assets/remoteEntry.js`
|
||
|
||
// 实现:限流与熔断,重试,IP 白名单,压缩等
|
||
// 基于 c 网关,由网关去寻找 微前端模块的地址
|
||
// 网关的地址是 nodejs脚本 定时10秒访问Nacos api 后,生成Traefik配置文件dynamic.yml,
|
||
// 并把配置实时同步到Traefik中,如果 xxx微前端模块停止运行那么就会从 Nacos服务中注销,
|
||
// 那么dynamic.yml配置文件就会自动删减被下线的网关映射
|
||
|
||
product: `http://${ env.VITE_TRAEFIK_ADDRESS }/${ env.VITE_MODEL_PRODUCT_NAME }/assets/remoteEntry.js`,
|
||
shared: `http://${ env.VITE_TRAEFIK_ADDRESS }/${ env.VITE_MODEL_SHARED_NAME }/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: {
|
||
'@': path.resolve(__dirname, './src/app/'),
|
||
'@shared': path.resolve(__dirname, './src/shared/'),
|
||
'@features': path.resolve(__dirname, './src/features/'),
|
||
'@domains': path.resolve(__dirname, './src/domains/')
|
||
},
|
||
},
|
||
}
|
||
})
|