| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { defineConfig,loadEnv } from '@rsbuild/core';
- import { pluginVue } from '@rsbuild/plugin-vue';
- import { pluginSass } from '@rsbuild/plugin-sass';
- import { pluginModuleFederation } from '@module-federation/rsbuild-plugin';
- import { generateRoutesInfoPlugin } from './plugins/generateRoutesInfoPlugin';
- import { generateExposesFromRoutes } from './plugins/generateExposesPlugin';
- import { zipDistPlugin } from './plugins/zipDistPlugin';
- import { routes } from './src/router/routes';
- import pkg from './package.json';
- // Docs: https://rsbuild.rs/config/
- export default defineConfig((env:any) => {
- // 生成 Module Federation exposes 配置(只展示叶子节点)
- const { exposes } = generateExposesFromRoutes(routes, { onlyLeafNodes: true });
- const nodeEnv = env?.env || 'development';
- // 加载环境变量
- const envVars = loadEnv(nodeEnv) as any;
- const distDir = 'dist';
- return {
- source: {
- // 配置路径别名
- alias: {
- '@': './src',
- },
- },
- server: {
- port: 3000,
- proxy: {
- '/api': {
- target: 'https://qysgl.mwr.cn/wr_web_manager/api',
- changeOrigin: true,
- pathRewrite: { '^/api': '' },
- },
- },
- },
- dev: {
- // writeToDisk 仅 MF 宿主加载远程入口时需要,独立 dev 关闭可避免 JS 请求被 SPA fallback 拦截
- writeToDisk: false,
- },
- html: {
- template: './index.html',
- mountId: 'root',
- },
- output: {
- assetPrefix: 'auto',
- injectStyles: true, // ← 新增:将 CSS 内联到 JS 中
- // 🚀 使用 VITE_API_BASE_NAME 作为输出目录名称
- distPath: {
- root: distDir,
- },
- },
- plugins: [
- pluginVue(),
- pluginSass(),
- pluginModuleFederation({
- name: pkg.name,
- getPublicPath: `function() { try { if (window.__MF_REMOTE_BASE_URL__ && window.__MF_REMOTE_BASE_URL__["${pkg.name}"]) { return window.__MF_REMOTE_BASE_URL__["${pkg.name}"]; } console.warn("__MF_REMOTE_BASE_URL__ not found, using fallback"); } catch (e) { console.warn("Failed to get publicPath from global variable:", e); } return window.location.origin + "/"; }`,
- // 🚀 根据路由自动生成 exposes 配置(只展示叶子节点)
- exposes: exposes,
- // ⭐ 完全禁用 DTS 插件
- dts: false,
- shared: {
- vue: {
- singleton: true,
- requiredVersion: '^3.5.26',
- },
- 'vue-router': {
- singleton: true,
- requiredVersion: '^4.6.4',
- },
- pinia: {
- singleton: true,
- requiredVersion: '^3.0.4',
- },
- 'ant-design-vue': {
- singleton: true,
- requiredVersion: '^4.2.6',
- },
- },
- }),
- // 自动生成 routes-info.json 插件
- generateRoutesInfoPlugin(),
- // 📦 最后执行:打包成 zip 并删除原始目录
- zipDistPlugin(distDir),
- ],
- };
- });
|