@module-federation/modern-js 0.0.0-next-20250219105538 → 0.0.0-next-20250220101307
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 +40 -13
- package/dist/cjs/cli/index.js +30 -24
- package/dist/cjs/cli/ssrPlugin.js +37 -28
- package/dist/cjs/cli/utils.js +59 -25
- package/dist/cjs/cli/utils.spec.js +60 -0
- package/dist/esm/cli/configPlugin.js +42 -14
- package/dist/esm/cli/index.js +35 -28
- package/dist/esm/cli/ssrPlugin.js +40 -28
- package/dist/esm/cli/utils.js +57 -25
- package/dist/esm/cli/utils.spec.js +78 -1
- package/dist/esm-node/cli/configPlugin.js +39 -13
- package/dist/esm-node/cli/index.js +30 -24
- package/dist/esm-node/cli/ssrPlugin.js +37 -27
- package/dist/esm-node/cli/utils.js +58 -25
- package/dist/esm-node/cli/utils.spec.js +61 -1
- package/dist/types/cli/configPlugin.d.ts +11 -1
- package/dist/types/cli/ssrPlugin.d.ts +0 -1
- package/dist/types/cli/utils.d.ts +4 -2
- package/package.json +13 -13
|
@@ -12,7 +12,6 @@ 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";
|
|
16
15
|
var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
17
16
|
return {
|
|
18
17
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
@@ -50,35 +49,35 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
50
49
|
plugins
|
|
51
50
|
};
|
|
52
51
|
});
|
|
53
|
-
api.modifyBundlerChain(function(chain, param) {
|
|
54
|
-
var isServer = param.isServer;
|
|
55
|
-
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
56
|
-
var MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
57
|
-
if (isServer) {
|
|
58
|
-
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
59
|
-
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
60
|
-
pluginOptions.ssrConfig
|
|
61
|
-
]).init(function(Plugin, args) {
|
|
62
|
-
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
63
|
-
return pluginOptions.nodePlugin;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (isServer) {
|
|
68
|
-
chain.target("async-node");
|
|
69
|
-
if (isDev) {
|
|
70
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (isDev && !isServer) {
|
|
74
|
-
chain.externals({
|
|
75
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
52
|
api.config(function() {
|
|
80
53
|
return {
|
|
81
54
|
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
|
+
},
|
|
82
81
|
devServer: {
|
|
83
82
|
before: [
|
|
84
83
|
function(req, res, next) {
|
|
@@ -104,6 +103,20 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
105
|
]
|
|
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
|
+
}
|
|
107
120
|
}
|
|
108
121
|
}
|
|
109
122
|
};
|
|
@@ -129,7 +142,6 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
129
142
|
};
|
|
130
143
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
131
144
|
export {
|
|
132
|
-
CHAIN_MF_PLUGIN_ID,
|
|
133
145
|
ssrPlugin_default as default,
|
|
134
146
|
moduleFederationSSRPlugin,
|
|
135
147
|
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(bundlerConfig) {
|
|
170
|
+
bundlerConfig.ignoreWarnings = bundlerConfig.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
|
-
ignoreWarnings.push(function(warning) {
|
|
176
|
+
bundlerConfig.ignoreWarnings.push(function(warning) {
|
|
177
177
|
if (ignoredMsgs.some(function(msg) {
|
|
178
178
|
return warning.message.includes(msg);
|
|
179
179
|
})) {
|
|
@@ -181,7 +181,6 @@ function patchIgnoreWarning(chain) {
|
|
|
181
181
|
}
|
|
182
182
|
return false;
|
|
183
183
|
});
|
|
184
|
-
chain.ignoreWarnings(ignoreWarnings);
|
|
185
184
|
}
|
|
186
185
|
function addMyTypes2Ignored(chain, mfConfig) {
|
|
187
186
|
var watchOptions = chain.get("watchOptions");
|
|
@@ -216,44 +215,54 @@ function addMyTypes2Ignored(chain, mfConfig) {
|
|
|
216
215
|
}));
|
|
217
216
|
}
|
|
218
217
|
function patchBundlerConfig(options) {
|
|
219
|
-
var _modernjsConfig_server, _modernjsConfig_deploy;
|
|
220
|
-
var
|
|
218
|
+
var _modernjsConfig_server, _bundlerConfig_optimization, _bundlerConfig_optimization1, _bundlerConfig_output, _modernjsConfig_deploy;
|
|
219
|
+
var bundlerConfig = options.bundlerConfig, modernjsConfig = options.modernjsConfig, isServer = options.isServer, mfConfig = options.mfConfig, bundlerType = options.bundlerType;
|
|
221
220
|
var enableSSR = Boolean((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
222
|
-
|
|
223
|
-
patchIgnoreWarning(
|
|
224
|
-
if (
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
221
|
+
(_bundlerConfig_optimization = bundlerConfig.optimization) === null || _bundlerConfig_optimization === void 0 ? true : delete _bundlerConfig_optimization.runtimeChunk;
|
|
222
|
+
patchIgnoreWarning(bundlerConfig);
|
|
223
|
+
if (bundlerConfig.output) {
|
|
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
|
+
}
|
|
229
231
|
}
|
|
230
|
-
var splitChunkConfig = chain.optimization.splitChunks.entries();
|
|
231
232
|
if (!isServer) {
|
|
232
|
-
autoDeleteSplitChunkCacheGroups(mfConfig,
|
|
233
|
+
autoDeleteSplitChunkCacheGroups(mfConfig, bundlerConfig);
|
|
233
234
|
}
|
|
234
|
-
if (!isServer && enableSSR &&
|
|
235
|
-
|
|
235
|
+
if (!isServer && enableSSR && _type_of((_bundlerConfig_optimization1 = bundlerConfig.optimization) === null || _bundlerConfig_optimization1 === void 0 ? void 0 : _bundlerConfig_optimization1.splitChunks) === "object" && bundlerConfig.optimization.splitChunks.cacheGroups) {
|
|
236
|
+
bundlerConfig.optimization.splitChunks.chunks = "async";
|
|
236
237
|
logger.warn('splitChunks.chunks = async is not allowed with stream SSR mode, it will auto changed to "async"');
|
|
237
238
|
}
|
|
238
|
-
if (isDev &&
|
|
239
|
+
if (isDev && ((_bundlerConfig_output = bundlerConfig.output) === null || _bundlerConfig_output === void 0 ? void 0 : _bundlerConfig_output.publicPath) === "auto") {
|
|
239
240
|
var _modernjsConfig_dev, _modernjsConfig_server1;
|
|
240
241
|
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;
|
|
241
242
|
var publicPath = "http://localhost:".concat(port, "/");
|
|
242
|
-
|
|
243
|
+
bundlerConfig.output.publicPath = publicPath;
|
|
243
244
|
}
|
|
244
245
|
if (isServer && enableSSR) {
|
|
245
|
-
var
|
|
246
|
-
var
|
|
247
|
-
|
|
246
|
+
var output = bundlerConfig.output;
|
|
247
|
+
var uniqueName = mfConfig.name || (output === null || output === void 0 ? void 0 : output.uniqueName);
|
|
248
|
+
var chunkFileName = output === null || output === void 0 ? void 0 : output.chunkFilename;
|
|
249
|
+
if (output && typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
|
|
248
250
|
var suffix = "".concat(encodeName(uniqueName), "-[chunkhash].js");
|
|
249
|
-
|
|
251
|
+
output.chunkFilename = chunkFileName.replace(".js", suffix);
|
|
250
252
|
}
|
|
251
253
|
}
|
|
252
254
|
if (isDev && enableSSR && !isServer) {
|
|
253
|
-
|
|
255
|
+
bundlerConfig.resolve.fallback = _object_spread_props(_object_spread({}, bundlerConfig.resolve.fallback), {
|
|
256
|
+
crypto: false,
|
|
257
|
+
stream: false,
|
|
258
|
+
vm: false
|
|
259
|
+
});
|
|
254
260
|
}
|
|
255
261
|
if (((_modernjsConfig_deploy = modernjsConfig.deploy) === null || _modernjsConfig_deploy === void 0 ? void 0 : _modernjsConfig_deploy.microFrontend) && Object.keys(mfConfig.exposes || {}).length) {
|
|
256
|
-
|
|
262
|
+
if (!bundlerConfig.optimization) {
|
|
263
|
+
bundlerConfig.optimization = {};
|
|
264
|
+
}
|
|
265
|
+
bundlerConfig.optimization.usedExports = false;
|
|
257
266
|
}
|
|
258
267
|
}
|
|
259
268
|
var localIpv4 = "127.0.0.1";
|
|
@@ -281,10 +290,33 @@ var getIPV4 = function() {
|
|
|
281
290
|
};
|
|
282
291
|
return ipv4Interface.address;
|
|
283
292
|
};
|
|
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
|
+
};
|
|
284
315
|
export {
|
|
285
316
|
addMyTypes2Ignored,
|
|
286
317
|
getIPV4,
|
|
287
318
|
getMFConfig,
|
|
288
319
|
patchBundlerConfig,
|
|
320
|
+
patchIgnoreWarning,
|
|
289
321
|
patchMFConfig
|
|
290
322
|
};
|
|
@@ -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, getIPV4 } from "./utils";
|
|
4
|
+
import { patchMFConfig, patchBundlerConfig, getIPV4 } from "./utils";
|
|
5
5
|
var mfConfig = {
|
|
6
6
|
name: "host",
|
|
7
7
|
filename: "remoteEntry.js",
|
|
@@ -105,3 +105,80 @@ 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,6 +6,17 @@ 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
|
+
}
|
|
9
20
|
const moduleFederationConfigPlugin = (userConfig) => ({
|
|
10
21
|
name: "@modern-js/plugin-module-federation-config",
|
|
11
22
|
pre: [
|
|
@@ -21,19 +32,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
21
32
|
const ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
|
|
22
33
|
userConfig.ssrConfig = ssrConfig;
|
|
23
34
|
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
|
-
});
|
|
37
35
|
api.config(() => {
|
|
38
36
|
var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
39
37
|
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
@@ -49,6 +47,33 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
49
47
|
var _modernjsConfig_source_enableAsyncEntry;
|
|
50
48
|
return {
|
|
51
49
|
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
|
+
},
|
|
52
77
|
devServer: {
|
|
53
78
|
headers: {
|
|
54
79
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -77,6 +102,7 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
77
102
|
var configPlugin_default = moduleFederationConfigPlugin;
|
|
78
103
|
export {
|
|
79
104
|
configPlugin_default as default,
|
|
105
|
+
modifyBundlerConfig,
|
|
80
106
|
moduleFederationConfigPlugin,
|
|
81
107
|
setEnv
|
|
82
108
|
};
|
|
@@ -17,31 +17,37 @@ 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
|
-
|
|
20
|
+
api.config(() => {
|
|
21
|
+
return {
|
|
22
|
+
tools: {
|
|
23
|
+
rspack(config, { isServer }) {
|
|
24
|
+
const browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
25
|
+
if (!isServer) {
|
|
26
|
+
var _config_plugins;
|
|
27
|
+
internalModernPluginOptions.browserPlugin = new RspackModuleFederationPlugin(browserPluginOptions);
|
|
28
|
+
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
webpack(config, { isServer }) {
|
|
32
|
+
var _modernjsConfig_source;
|
|
33
|
+
const browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
34
|
+
if (!isServer) {
|
|
35
|
+
var _config_plugins;
|
|
36
|
+
internalModernPluginOptions.browserPlugin = new WebpackModuleFederationPlugin(browserPluginOptions);
|
|
37
|
+
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
|
|
38
|
+
}
|
|
39
|
+
const enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
40
|
+
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
41
|
+
var _config_plugins1;
|
|
42
|
+
const asyncBoundaryPluginOptions = typeof browserPluginOptions.async === "object" ? browserPluginOptions.async : {
|
|
43
|
+
eager: (module) => module && /\.federation/.test((module === null || module === void 0 ? void 0 : module.request) || ""),
|
|
44
|
+
excludeChunk: (chunk) => chunk.name === browserPluginOptions.name
|
|
45
|
+
};
|
|
46
|
+
(_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(new AsyncBoundaryPlugin(asyncBoundaryPluginOptions));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
43
49
|
}
|
|
44
|
-
}
|
|
50
|
+
};
|
|
45
51
|
});
|
|
46
52
|
},
|
|
47
53
|
usePlugins: [
|
|
@@ -10,7 +10,6 @@ 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";
|
|
14
13
|
const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
15
14
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
16
15
|
pre: [
|
|
@@ -42,34 +41,33 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
42
41
|
plugins
|
|
43
42
|
};
|
|
44
43
|
});
|
|
45
|
-
api.modifyBundlerChain((chain, { isServer }) => {
|
|
46
|
-
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
47
|
-
const MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
48
|
-
if (isServer) {
|
|
49
|
-
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
50
|
-
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
51
|
-
pluginOptions.ssrConfig
|
|
52
|
-
]).init((Plugin, args) => {
|
|
53
|
-
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
54
|
-
return pluginOptions.nodePlugin;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (isServer) {
|
|
59
|
-
chain.target("async-node");
|
|
60
|
-
if (isDev) {
|
|
61
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (isDev && !isServer) {
|
|
65
|
-
chain.externals({
|
|
66
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
44
|
api.config(() => {
|
|
71
45
|
return {
|
|
72
46
|
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
|
+
},
|
|
73
71
|
devServer: {
|
|
74
72
|
before: [
|
|
75
73
|
(req, res, next) => {
|
|
@@ -95,6 +93,19 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
]
|
|
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
|
+
}
|
|
98
109
|
}
|
|
99
110
|
}
|
|
100
111
|
};
|
|
@@ -111,7 +122,6 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
111
122
|
});
|
|
112
123
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
113
124
|
export {
|
|
114
|
-
CHAIN_MF_PLUGIN_ID,
|
|
115
125
|
ssrPlugin_default as default,
|
|
116
126
|
moduleFederationSSRPlugin,
|
|
117
127
|
setEnv
|