提交 6cf022cd 作者: yueyang.lv

build(模块联邦): 打包方案调整

remote 路径支持变量控制
上级 15fd69f2
const express = require("express");
const setupProxy = require("./src/setupProxy");
const serveStatic = require("serve-static");
var history = require("connect-history-api-fallback");
const PORT = 5001;
const app = express();
setupProxy(app);
app.use(history());
// app.use(express.static("build"));
app.use(serveStatic("build", { index: ["index.html", "index.htm"] }));
app.listen(PORT);
console.log(`build 文件预览服务已开启 http://127.0.0.1:${PORT}`);
...@@ -20,21 +20,33 @@ function filterShared(keys) { ...@@ -20,21 +20,33 @@ function filterShared(keys) {
return newDeps; return newDeps;
} }
const isDev = process.env.NODE_ENV !== "production";
const remoteOrigin = isDev ? "http://localhost:9000" : process.env.REMOTE_URL;
if (!remoteOrigin) {
throw new Error(
"打包失败:土星云远程模块地址不存在, 请在环境变量中设置 REMOTE_URL 为远程模块地址"
);
}
// 模块联邦 // 模块联邦
module.exports = function (config, env) { module.exports = function (config, env) {
// config.output.crossOriginLoading = "use-credentials";
config.output.crossOriginLoading = "anonymous";
console.log(`土星云业务远程地址为:${remoteOrigin}`);
config.plugins.unshift( config.plugins.unshift(
new ModuleFederationPlugin({ new ModuleFederationPlugin({
name: "minio_console", name: "minio_console",
remotes: { remotes: {
saturnApp: "saturnApp@http://localhost:9000/remoteEntry.js", saturnApp: `saturnApp@${remoteOrigin}/remoteEntry.js`,
},
filename: "remoteEntry.js",
exposes: {
"./PageLayout": "./src/screens/Console/Common/Layout/PageLayout.tsx",
"./PageHeader":
"./src/screens/Console/Common/PageHeader/PageHeader.tsx",
"./history": "./src/history.ts",
}, },
// filename: "remoteEntry.js",
// exposes: {
// "./PageLayout": "./src/screens/Console/Common/Layout/PageLayout.tsx",
// "./PageHeader":
// "./src/screens/Console/Common/PageHeader/PageHeader.tsx",
// "./history": "./src/history.ts",
// },
shared: { shared: {
...filterShared([ ...filterShared([
// '@codemirror/lang-json', // '@codemirror/lang-json',
...@@ -69,6 +81,7 @@ module.exports = function (config, env) { ...@@ -69,6 +81,7 @@ module.exports = function (config, env) {
// 'redux', // 'redux',
// 'redux-thunk', // 'redux-thunk',
"superagent", "superagent",
"react-router-dom",
// 'use-debounce', // 'use-debounce',
// 'websocket', // 'websocket',
// 'chart.js', // 'chart.js',
......
import { Suspense, lazy, useState, useEffect } from "react"; import { Suspense, lazy, useState, useEffect } from "react";
import { NavLink } from "react-router-dom";
import LoadingComponent from "../common/LoadingComponent"; import LoadingComponent from "../common/LoadingComponent";
import history from "../history"; import history from "../history";
// import RemoteComponent from "./RemoteComponent"; // import RemoteComponent from "./RemoteComponent";
...@@ -46,8 +47,10 @@ export function useSaturnConsoleMenu() { ...@@ -46,8 +47,10 @@ export function useSaturnConsoleMenu() {
useEffect(() => { useEffect(() => {
import("saturnApp/consoleMenu") import("saturnApp/consoleMenu")
.then((res) => { .then((res) => {
console.log(res.default); const createMenu = res.default;
setMenu(res.default); createMenu(NavLink).then((menu) => {
setMenu(menu);
});
}) })
.catch((e) => { .catch((e) => {
console.error(e); console.error(e);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论