@module-federation/modern-js 0.0.0-next-20250219033929 → 0.0.0-next-20250219082408
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/configPlugin.js +13 -40
- package/dist/cjs/cli/index.js +26 -30
- package/dist/cjs/cli/ssrPlugin.js +32 -37
- package/dist/cjs/cli/utils.js +24 -59
- package/dist/cjs/cli/utils.spec.js +0 -60
- package/dist/esm/cli/configPlugin.js +14 -42
- package/dist/esm/cli/index.js +30 -35
- package/dist/esm/cli/ssrPlugin.js +32 -40
- package/dist/esm/cli/utils.js +24 -57
- package/dist/esm/cli/utils.spec.js +1 -78
- package/dist/esm-node/cli/configPlugin.js +13 -39
- package/dist/esm-node/cli/index.js +26 -30
- package/dist/esm-node/cli/ssrPlugin.js +31 -37
- package/dist/esm-node/cli/utils.js +24 -58
- package/dist/esm-node/cli/utils.spec.js +1 -61
- package/dist/types/cli/configPlugin.d.ts +1 -11
- package/dist/types/cli/ssrPlugin.d.ts +1 -0
- package/dist/types/cli/utils.d.ts +2 -4
- package/package.json +13 -13
|
@@ -12,6 +12,7 @@ function setEnv() {
|
|
|
12
12
|
process.env["MF_DISABLE_EMIT_STATS"] = "true";
|
|
13
13
|
process.env["MF_SSR_PRJ"] = "true";
|
|
14
14
|
}
|
|
15
|
+
var CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
|
|
15
16
|
var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
16
17
|
return {
|
|
17
18
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
@@ -25,6 +26,8 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
25
26
|
return _ts_generator(this, function(_state) {
|
|
26
27
|
modernjsConfig = api.getConfig();
|
|
27
28
|
enableSSR = ((_pluginOptions_userConfig = pluginOptions.userConfig) === null || _pluginOptions_userConfig === void 0 ? void 0 : _pluginOptions_userConfig.ssr) === false ? false : Boolean(modernjsConfig === null || modernjsConfig === void 0 ? void 0 : (_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
29
|
+
console.log("enableSSR: ", enableSSR);
|
|
30
|
+
console.log("isDev: ", isDev);
|
|
28
31
|
if (!enableSSR) {
|
|
29
32
|
return [
|
|
30
33
|
2
|
|
@@ -49,35 +52,37 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
49
52
|
plugins
|
|
50
53
|
};
|
|
51
54
|
});
|
|
55
|
+
api.modifyBundlerChain(function(chain, param) {
|
|
56
|
+
var isServer = param.isServer;
|
|
57
|
+
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
58
|
+
console.log("ssrPlugin bundlerType: ", bundlerType);
|
|
59
|
+
console.log("ssrPlugin isServer: ", isServer);
|
|
60
|
+
var MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
61
|
+
if (isServer) {
|
|
62
|
+
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
63
|
+
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
64
|
+
pluginOptions.ssrConfig
|
|
65
|
+
]).init(function(Plugin, args) {
|
|
66
|
+
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
67
|
+
return pluginOptions.nodePlugin;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (isServer) {
|
|
72
|
+
chain.target("async-node");
|
|
73
|
+
if (isDev) {
|
|
74
|
+
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (isDev && !isServer) {
|
|
78
|
+
chain.externals({
|
|
79
|
+
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
52
83
|
api.config(function() {
|
|
53
84
|
return {
|
|
54
85
|
tools: {
|
|
55
|
-
rspack: function rspack(config, param) {
|
|
56
|
-
var isServer = param.isServer;
|
|
57
|
-
if (isServer) {
|
|
58
|
-
if (!pluginOptions.nodePlugin) {
|
|
59
|
-
var _config_plugins;
|
|
60
|
-
pluginOptions.nodePlugin = new RspackModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
61
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
var _config_output;
|
|
65
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
webpack: function webpack(config, param) {
|
|
69
|
-
var isServer = param.isServer;
|
|
70
|
-
if (isServer) {
|
|
71
|
-
if (!pluginOptions.nodePlugin) {
|
|
72
|
-
var _config_plugins;
|
|
73
|
-
pluginOptions.nodePlugin = new ModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
74
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
var _config_output;
|
|
78
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
86
|
devServer: {
|
|
82
87
|
before: [
|
|
83
88
|
function(req, res, next) {
|
|
@@ -103,20 +108,6 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
103
108
|
}
|
|
104
109
|
}
|
|
105
110
|
]
|
|
106
|
-
},
|
|
107
|
-
bundlerChain: function bundlerChain(chain, param) {
|
|
108
|
-
var isServer = param.isServer;
|
|
109
|
-
if (isServer) {
|
|
110
|
-
chain.target("async-node");
|
|
111
|
-
if (isDev) {
|
|
112
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (isDev && !isServer) {
|
|
116
|
-
chain.externals({
|
|
117
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
111
|
}
|
|
121
112
|
}
|
|
122
113
|
};
|
|
@@ -142,6 +133,7 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
142
133
|
};
|
|
143
134
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
144
135
|
export {
|
|
136
|
+
CHAIN_MF_PLUGIN_ID,
|
|
145
137
|
ssrPlugin_default as default,
|
|
146
138
|
moduleFederationSSRPlugin,
|
|
147
139
|
setEnv
|
package/dist/esm/cli/utils.js
CHANGED
|
@@ -166,14 +166,14 @@ var patchMFConfig = function(mfConfig, isServer, remoteIpStrategy) {
|
|
|
166
166
|
mfConfig.dev = false;
|
|
167
167
|
return mfConfig;
|
|
168
168
|
};
|
|
169
|
-
function patchIgnoreWarning(
|
|
170
|
-
|
|
169
|
+
function patchIgnoreWarning(chain) {
|
|
170
|
+
var ignoreWarnings = chain.get("ignoreWarnings") || [];
|
|
171
171
|
var ignoredMsgs = [
|
|
172
172
|
"external script",
|
|
173
173
|
"process.env.WS_NO_BUFFER_UTIL",
|
|
174
174
|
"Can't resolve 'utf-8-validate"
|
|
175
175
|
];
|
|
176
|
-
|
|
176
|
+
ignoreWarnings.push(function(warning) {
|
|
177
177
|
if (ignoredMsgs.some(function(msg) {
|
|
178
178
|
return warning.message.includes(msg);
|
|
179
179
|
})) {
|
|
@@ -181,6 +181,7 @@ function patchIgnoreWarning(bundlerConfig) {
|
|
|
181
181
|
}
|
|
182
182
|
return false;
|
|
183
183
|
});
|
|
184
|
+
chain.ignoreWarnings(ignoreWarnings);
|
|
184
185
|
}
|
|
185
186
|
function addMyTypes2Ignored(chain, mfConfig) {
|
|
186
187
|
var watchOptions = chain.get("watchOptions");
|
|
@@ -215,54 +216,43 @@ function addMyTypes2Ignored(chain, mfConfig) {
|
|
|
215
216
|
}));
|
|
216
217
|
}
|
|
217
218
|
function patchBundlerConfig(options) {
|
|
218
|
-
var _modernjsConfig_server,
|
|
219
|
-
var
|
|
219
|
+
var _modernjsConfig_server, _modernjsConfig_deploy;
|
|
220
|
+
var chain = options.chain, modernjsConfig = options.modernjsConfig, isServer = options.isServer, mfConfig = options.mfConfig;
|
|
220
221
|
var enableSSR = Boolean((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
var _bundlerConfig_output1, _bundlerConfig_output2;
|
|
225
|
-
if (!((_bundlerConfig_output1 = bundlerConfig.output) === null || _bundlerConfig_output1 === void 0 ? void 0 : _bundlerConfig_output1.chunkLoadingGlobal)) {
|
|
226
|
-
bundlerConfig.output.chunkLoadingGlobal = "chunk_".concat(mfConfig.name);
|
|
227
|
-
}
|
|
228
|
-
if (!((_bundlerConfig_output2 = bundlerConfig.output) === null || _bundlerConfig_output2 === void 0 ? void 0 : _bundlerConfig_output2.uniqueName)) {
|
|
229
|
-
bundlerConfig.output.uniqueName = mfConfig.name;
|
|
230
|
-
}
|
|
222
|
+
chain.optimization.runtimeChunk(false);
|
|
223
|
+
if (!chain.output.get("chunkLoadingGlobal")) {
|
|
224
|
+
chain.output.chunkLoadingGlobal("chunk_".concat(mfConfig.name));
|
|
231
225
|
}
|
|
226
|
+
if (!chain.output.get("uniqueName")) {
|
|
227
|
+
chain.output.uniqueName(mfConfig.name);
|
|
228
|
+
}
|
|
229
|
+
var optimizationConfig = chain.optimization.entries();
|
|
232
230
|
if (!isServer) {
|
|
233
|
-
autoDeleteSplitChunkCacheGroups(mfConfig,
|
|
231
|
+
autoDeleteSplitChunkCacheGroups(mfConfig, optimizationConfig);
|
|
234
232
|
}
|
|
235
|
-
if (!isServer && enableSSR && _type_of(
|
|
236
|
-
|
|
233
|
+
if (!isServer && enableSSR && _type_of(optimizationConfig === null || optimizationConfig === void 0 ? void 0 : optimizationConfig.splitChunks) === "object" && optimizationConfig.splitChunks.cacheGroups) {
|
|
234
|
+
optimizationConfig.splitChunks.chunks = "async";
|
|
237
235
|
logger.warn('splitChunks.chunks = async is not allowed with stream SSR mode, it will auto changed to "async"');
|
|
238
236
|
}
|
|
239
|
-
if (isDev &&
|
|
237
|
+
if (isDev && chain.output.get("publicPath") === "auto") {
|
|
240
238
|
var _modernjsConfig_dev, _modernjsConfig_server1;
|
|
241
239
|
var port = ((_modernjsConfig_dev = modernjsConfig.dev) === null || _modernjsConfig_dev === void 0 ? void 0 : _modernjsConfig_dev.port) || ((_modernjsConfig_server1 = modernjsConfig.server) === null || _modernjsConfig_server1 === void 0 ? void 0 : _modernjsConfig_server1.port) || 8080;
|
|
242
240
|
var publicPath = "http://localhost:".concat(port, "/");
|
|
243
|
-
|
|
241
|
+
chain.output.publicPath(publicPath);
|
|
244
242
|
}
|
|
245
243
|
if (isServer && enableSSR) {
|
|
246
|
-
var
|
|
247
|
-
var
|
|
248
|
-
|
|
249
|
-
if (output && typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
|
|
244
|
+
var uniqueName = mfConfig.name || chain.output.get("uniqueName");
|
|
245
|
+
var chunkFileName = chain.output.get("chunkFilename");
|
|
246
|
+
if (typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
|
|
250
247
|
var suffix = "".concat(encodeName(uniqueName), "-[chunkhash].js");
|
|
251
|
-
output.chunkFilename
|
|
248
|
+
chain.output.chunkFilename(chunkFileName.replace(".js", suffix));
|
|
252
249
|
}
|
|
253
250
|
}
|
|
254
251
|
if (isDev && enableSSR && !isServer) {
|
|
255
|
-
|
|
256
|
-
crypto: false,
|
|
257
|
-
stream: false,
|
|
258
|
-
vm: false
|
|
259
|
-
});
|
|
252
|
+
chain.resolve.fallback.set("crypto", false).set("stream", false).set("vm", false);
|
|
260
253
|
}
|
|
261
254
|
if (((_modernjsConfig_deploy = modernjsConfig.deploy) === null || _modernjsConfig_deploy === void 0 ? void 0 : _modernjsConfig_deploy.microFrontend) && Object.keys(mfConfig.exposes || {}).length) {
|
|
262
|
-
|
|
263
|
-
bundlerConfig.optimization = {};
|
|
264
|
-
}
|
|
265
|
-
bundlerConfig.optimization.usedExports = false;
|
|
255
|
+
chain.optimization.usedExports(false);
|
|
266
256
|
}
|
|
267
257
|
}
|
|
268
258
|
var localIpv4 = "127.0.0.1";
|
|
@@ -290,33 +280,10 @@ var getIPV4 = function() {
|
|
|
290
280
|
};
|
|
291
281
|
return ipv4Interface.address;
|
|
292
282
|
};
|
|
293
|
-
var SPLIT_CHUNK_MAP = {
|
|
294
|
-
REACT: "react",
|
|
295
|
-
ROUTER: "router",
|
|
296
|
-
LODASH: "lib-lodash",
|
|
297
|
-
ANTD: "lib-antd",
|
|
298
|
-
ARCO: "lib-arco",
|
|
299
|
-
SEMI: "lib-semi",
|
|
300
|
-
AXIOS: "lib-axios"
|
|
301
|
-
};
|
|
302
|
-
var SHARED_SPLIT_CHUNK_MAP = {
|
|
303
|
-
react: SPLIT_CHUNK_MAP.REACT,
|
|
304
|
-
"react-dom": SPLIT_CHUNK_MAP.REACT,
|
|
305
|
-
"react-router": SPLIT_CHUNK_MAP.ROUTER,
|
|
306
|
-
"react-router-dom": SPLIT_CHUNK_MAP.ROUTER,
|
|
307
|
-
"@remix-run/router": SPLIT_CHUNK_MAP.ROUTER,
|
|
308
|
-
lodash: SPLIT_CHUNK_MAP.LODASH,
|
|
309
|
-
"lodash-es": SPLIT_CHUNK_MAP.LODASH,
|
|
310
|
-
antd: SPLIT_CHUNK_MAP.ANTD,
|
|
311
|
-
"@arco-design/web-react": SPLIT_CHUNK_MAP.ARCO,
|
|
312
|
-
"@douyinfe/semi-ui": SPLIT_CHUNK_MAP.SEMI,
|
|
313
|
-
axios: SPLIT_CHUNK_MAP.AXIOS
|
|
314
|
-
};
|
|
315
283
|
export {
|
|
316
284
|
addMyTypes2Ignored,
|
|
317
285
|
getIPV4,
|
|
318
286
|
getMFConfig,
|
|
319
287
|
patchBundlerConfig,
|
|
320
|
-
patchIgnoreWarning,
|
|
321
288
|
patchMFConfig
|
|
322
289
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
2
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
3
3
|
import { it, expect, describe } from "vitest";
|
|
4
|
-
import { patchMFConfig,
|
|
4
|
+
import { patchMFConfig, getIPV4 } from "./utils";
|
|
5
5
|
var mfConfig = {
|
|
6
6
|
name: "host",
|
|
7
7
|
filename: "remoteEntry.js",
|
|
@@ -105,80 +105,3 @@ describe("patchMFConfig", /* @__PURE__ */ _async_to_generator(function() {
|
|
|
105
105
|
];
|
|
106
106
|
});
|
|
107
107
|
}));
|
|
108
|
-
describe("patchBundlerConfig", /* @__PURE__ */ _async_to_generator(function() {
|
|
109
|
-
return _ts_generator(this, function(_state) {
|
|
110
|
-
it("patchBundlerConfig: server", /* @__PURE__ */ _async_to_generator(function() {
|
|
111
|
-
var bundlerConfig, expectedConfig;
|
|
112
|
-
return _ts_generator(this, function(_state2) {
|
|
113
|
-
bundlerConfig = {
|
|
114
|
-
output: {
|
|
115
|
-
publicPath: "auto"
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
patchBundlerConfig({
|
|
119
|
-
bundlerType: "webpack",
|
|
120
|
-
bundlerConfig,
|
|
121
|
-
isServer: true,
|
|
122
|
-
modernjsConfig: {
|
|
123
|
-
server: {
|
|
124
|
-
ssr: {
|
|
125
|
-
mode: "stream"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
mfConfig
|
|
130
|
-
});
|
|
131
|
-
expectedConfig = {
|
|
132
|
-
output: {
|
|
133
|
-
chunkLoadingGlobal: "chunk_host",
|
|
134
|
-
publicPath: "auto",
|
|
135
|
-
uniqueName: "host"
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
bundlerConfig === null || bundlerConfig === void 0 ? true : delete bundlerConfig.ignoreWarnings;
|
|
139
|
-
expect(bundlerConfig).toStrictEqual(expectedConfig);
|
|
140
|
-
return [
|
|
141
|
-
2
|
|
142
|
-
];
|
|
143
|
-
});
|
|
144
|
-
}));
|
|
145
|
-
it("patchBundlerConfig: client", /* @__PURE__ */ _async_to_generator(function() {
|
|
146
|
-
var bundlerConfig, expectedConfig;
|
|
147
|
-
return _ts_generator(this, function(_state2) {
|
|
148
|
-
bundlerConfig = {
|
|
149
|
-
output: {
|
|
150
|
-
publicPath: "auto"
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
patchBundlerConfig({
|
|
154
|
-
bundlerType: "webpack",
|
|
155
|
-
bundlerConfig,
|
|
156
|
-
isServer: false,
|
|
157
|
-
modernjsConfig: {
|
|
158
|
-
server: {
|
|
159
|
-
ssr: {
|
|
160
|
-
mode: "stream"
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
mfConfig
|
|
165
|
-
});
|
|
166
|
-
expectedConfig = {
|
|
167
|
-
output: {
|
|
168
|
-
chunkLoadingGlobal: "chunk_host",
|
|
169
|
-
publicPath: "auto",
|
|
170
|
-
uniqueName: "host"
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
bundlerConfig === null || bundlerConfig === void 0 ? true : delete bundlerConfig.ignoreWarnings;
|
|
174
|
-
expect(bundlerConfig).toStrictEqual(expectedConfig);
|
|
175
|
-
return [
|
|
176
|
-
2
|
|
177
|
-
];
|
|
178
|
-
});
|
|
179
|
-
}));
|
|
180
|
-
return [
|
|
181
|
-
2
|
|
182
|
-
];
|
|
183
|
-
});
|
|
184
|
-
}));
|
|
@@ -6,17 +6,6 @@ function setEnv(enableSSR) {
|
|
|
6
6
|
process.env["MF_SSR_PRJ"] = "true";
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
function modifyBundlerConfig(options) {
|
|
10
|
-
const { mfConfig, config, isServer, modernjsConfig, remoteIpStrategy = "ipv4", bundlerType } = options;
|
|
11
|
-
patchMFConfig(mfConfig, isServer, remoteIpStrategy);
|
|
12
|
-
patchBundlerConfig({
|
|
13
|
-
bundlerType,
|
|
14
|
-
bundlerConfig: config,
|
|
15
|
-
isServer,
|
|
16
|
-
modernjsConfig,
|
|
17
|
-
mfConfig
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
9
|
const moduleFederationConfigPlugin = (userConfig) => ({
|
|
21
10
|
name: "@modern-js/plugin-module-federation-config",
|
|
22
11
|
pre: [
|
|
@@ -32,6 +21,19 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
32
21
|
const ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
|
|
33
22
|
userConfig.ssrConfig = ssrConfig;
|
|
34
23
|
userConfig.csrConfig = csrConfig;
|
|
24
|
+
api.modifyBundlerChain((chain, { isProd, isServer }) => {
|
|
25
|
+
addMyTypes2Ignored(chain, isServer ? ssrConfig : csrConfig);
|
|
26
|
+
const targetMFConfig = isServer ? ssrConfig : csrConfig;
|
|
27
|
+
patchMFConfig(targetMFConfig, isServer, userConfig.remoteIpStrategy || "ipv4");
|
|
28
|
+
patchBundlerConfig({
|
|
29
|
+
// @ts-expect-error chain type is not correct
|
|
30
|
+
chain,
|
|
31
|
+
isServer,
|
|
32
|
+
modernjsConfig,
|
|
33
|
+
mfConfig
|
|
34
|
+
});
|
|
35
|
+
userConfig.distOutputDir = chain.output.get("path") || path.resolve(process.cwd(), "dist");
|
|
36
|
+
});
|
|
35
37
|
api.config(() => {
|
|
36
38
|
var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
37
39
|
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
@@ -47,33 +49,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
47
49
|
var _modernjsConfig_source_enableAsyncEntry;
|
|
48
50
|
return {
|
|
49
51
|
tools: {
|
|
50
|
-
bundlerChain(chain, { isServer }) {
|
|
51
|
-
addMyTypes2Ignored(chain, isServer ? ssrConfig : csrConfig);
|
|
52
|
-
},
|
|
53
|
-
rspack(config, { isServer }) {
|
|
54
|
-
var _config_output;
|
|
55
|
-
modifyBundlerConfig({
|
|
56
|
-
bundlerType,
|
|
57
|
-
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
58
|
-
config,
|
|
59
|
-
isServer,
|
|
60
|
-
modernjsConfig,
|
|
61
|
-
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
62
|
-
});
|
|
63
|
-
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
64
|
-
},
|
|
65
|
-
webpack(config, { isServer }) {
|
|
66
|
-
var _config_output;
|
|
67
|
-
modifyBundlerConfig({
|
|
68
|
-
bundlerType,
|
|
69
|
-
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
70
|
-
config,
|
|
71
|
-
isServer,
|
|
72
|
-
modernjsConfig,
|
|
73
|
-
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
74
|
-
});
|
|
75
|
-
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
76
|
-
},
|
|
77
52
|
devServer: {
|
|
78
53
|
headers: {
|
|
79
54
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -102,7 +77,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
102
77
|
var configPlugin_default = moduleFederationConfigPlugin;
|
|
103
78
|
export {
|
|
104
79
|
configPlugin_default as default,
|
|
105
|
-
modifyBundlerConfig,
|
|
106
80
|
moduleFederationConfigPlugin,
|
|
107
81
|
setEnv
|
|
108
82
|
};
|
|
@@ -17,37 +17,33 @@ const moduleFederationPlugin = (userConfig = {}) => {
|
|
|
17
17
|
name: "@modern-js/plugin-module-federation",
|
|
18
18
|
setup: async (api) => {
|
|
19
19
|
const modernjsConfig = api.getConfig();
|
|
20
|
-
api.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
(_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(new AsyncBoundaryPlugin(asyncBoundaryPluginOptions));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
20
|
+
api.modifyBundlerChain((chain, { isServer }) => {
|
|
21
|
+
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
22
|
+
console.log("index bundlerType", bundlerType);
|
|
23
|
+
console.log("index isServer", isServer);
|
|
24
|
+
const browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
25
|
+
const MFPlugin = bundlerType === "webpack" ? WebpackModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
26
|
+
if (!isServer) {
|
|
27
|
+
chain.plugin("plugin-module-federation").use(MFPlugin, [
|
|
28
|
+
browserPluginOptions
|
|
29
|
+
]).init((Plugin, args) => {
|
|
30
|
+
internalModernPluginOptions.browserPlugin = new Plugin(args[0]);
|
|
31
|
+
return internalModernPluginOptions.browserPlugin;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (bundlerType === "webpack") {
|
|
35
|
+
var _modernjsConfig_source;
|
|
36
|
+
const enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
37
|
+
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
38
|
+
const asyncBoundaryPluginOptions = typeof browserPluginOptions.async === "object" ? browserPluginOptions.async : {
|
|
39
|
+
eager: (module) => module && /\.federation/.test((module === null || module === void 0 ? void 0 : module.request) || ""),
|
|
40
|
+
excludeChunk: (chunk) => chunk.name === browserPluginOptions.name
|
|
41
|
+
};
|
|
42
|
+
chain.plugin("async-boundary-plugin").use(AsyncBoundaryPlugin, [
|
|
43
|
+
asyncBoundaryPluginOptions
|
|
44
|
+
]);
|
|
49
45
|
}
|
|
50
|
-
}
|
|
46
|
+
}
|
|
51
47
|
});
|
|
52
48
|
},
|
|
53
49
|
usePlugins: [
|
|
@@ -10,6 +10,7 @@ function setEnv() {
|
|
|
10
10
|
process.env["MF_DISABLE_EMIT_STATS"] = "true";
|
|
11
11
|
process.env["MF_SSR_PRJ"] = "true";
|
|
12
12
|
}
|
|
13
|
+
const CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
|
|
13
14
|
const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
14
15
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
15
16
|
pre: [
|
|
@@ -20,6 +21,8 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
20
21
|
var _pluginOptions_userConfig, _modernjsConfig_server;
|
|
21
22
|
const modernjsConfig = api.getConfig();
|
|
22
23
|
const enableSSR = ((_pluginOptions_userConfig = pluginOptions.userConfig) === null || _pluginOptions_userConfig === void 0 ? void 0 : _pluginOptions_userConfig.ssr) === false ? false : Boolean(modernjsConfig === null || modernjsConfig === void 0 ? void 0 : (_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
24
|
+
console.log("enableSSR: ", enableSSR);
|
|
25
|
+
console.log("isDev: ", isDev);
|
|
23
26
|
if (!enableSSR) {
|
|
24
27
|
return;
|
|
25
28
|
}
|
|
@@ -41,33 +44,36 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
41
44
|
plugins
|
|
42
45
|
};
|
|
43
46
|
});
|
|
47
|
+
api.modifyBundlerChain((chain, { isServer }) => {
|
|
48
|
+
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
49
|
+
console.log("ssrPlugin bundlerType: ", bundlerType);
|
|
50
|
+
console.log("ssrPlugin isServer: ", isServer);
|
|
51
|
+
const MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
52
|
+
if (isServer) {
|
|
53
|
+
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
54
|
+
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
55
|
+
pluginOptions.ssrConfig
|
|
56
|
+
]).init((Plugin, args) => {
|
|
57
|
+
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
58
|
+
return pluginOptions.nodePlugin;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (isServer) {
|
|
63
|
+
chain.target("async-node");
|
|
64
|
+
if (isDev) {
|
|
65
|
+
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (isDev && !isServer) {
|
|
69
|
+
chain.externals({
|
|
70
|
+
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
44
74
|
api.config(() => {
|
|
45
75
|
return {
|
|
46
76
|
tools: {
|
|
47
|
-
rspack(config, { isServer }) {
|
|
48
|
-
if (isServer) {
|
|
49
|
-
if (!pluginOptions.nodePlugin) {
|
|
50
|
-
var _config_plugins;
|
|
51
|
-
pluginOptions.nodePlugin = new RspackModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
52
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
var _config_output;
|
|
56
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
webpack(config, { isServer }) {
|
|
60
|
-
if (isServer) {
|
|
61
|
-
if (!pluginOptions.nodePlugin) {
|
|
62
|
-
var _config_plugins;
|
|
63
|
-
pluginOptions.nodePlugin = new ModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
64
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
65
|
-
}
|
|
66
|
-
} else {
|
|
67
|
-
var _config_output;
|
|
68
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
77
|
devServer: {
|
|
72
78
|
before: [
|
|
73
79
|
(req, res, next) => {
|
|
@@ -93,19 +99,6 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
93
99
|
}
|
|
94
100
|
}
|
|
95
101
|
]
|
|
96
|
-
},
|
|
97
|
-
bundlerChain(chain, { isServer }) {
|
|
98
|
-
if (isServer) {
|
|
99
|
-
chain.target("async-node");
|
|
100
|
-
if (isDev) {
|
|
101
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (isDev && !isServer) {
|
|
105
|
-
chain.externals({
|
|
106
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
102
|
}
|
|
110
103
|
}
|
|
111
104
|
};
|
|
@@ -122,6 +115,7 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
122
115
|
});
|
|
123
116
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
124
117
|
export {
|
|
118
|
+
CHAIN_MF_PLUGIN_ID,
|
|
125
119
|
ssrPlugin_default as default,
|
|
126
120
|
moduleFederationSSRPlugin,
|
|
127
121
|
setEnv
|