@module-federation/modern-js 0.0.0-next-20250221090527 → 0.0.0-next-20250221091229
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 +42 -18
- package/dist/cjs/cli/index.js +30 -24
- package/dist/cjs/cli/manifest.js +10 -9
- package/dist/cjs/cli/ssrPlugin.js +40 -40
- package/dist/cjs/cli/utils.js +62 -27
- package/dist/cjs/cli/utils.spec.js +60 -0
- package/dist/esm/cli/configPlugin.js +45 -18
- package/dist/esm/cli/index.js +35 -28
- package/dist/esm/cli/manifest.js +10 -9
- package/dist/esm/cli/ssrPlugin.js +44 -40
- package/dist/esm/cli/utils.js +60 -27
- package/dist/esm/cli/utils.spec.js +78 -1
- package/dist/esm-node/cli/configPlugin.js +41 -18
- package/dist/esm-node/cli/index.js +30 -24
- package/dist/esm-node/cli/manifest.js +10 -9
- package/dist/esm-node/cli/ssrPlugin.js +40 -39
- package/dist/esm-node/cli/utils.js +61 -27
- package/dist/esm-node/cli/utils.spec.js +61 -1
- package/dist/types/cli/configPlugin.d.ts +11 -1
- package/dist/types/cli/manifest.d.ts +1 -1
- package/dist/types/cli/ssrPlugin.d.ts +0 -1
- package/dist/types/cli/utils.d.ts +6 -5
- package/dist/types/types/index.d.ts +1 -1
- package/package.json +13 -13
|
@@ -8,6 +8,17 @@ function setEnv(enableSSR) {
|
|
|
8
8
|
process.env["MF_SSR_PRJ"] = "true";
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
function modifyBundlerConfig(options) {
|
|
12
|
+
var mfConfig = options.mfConfig, config = options.config, isServer = options.isServer, modernjsConfig = options.modernjsConfig, _options_remoteIpStrategy = options.remoteIpStrategy, remoteIpStrategy = _options_remoteIpStrategy === void 0 ? "ipv4" : _options_remoteIpStrategy, bundlerType = options.bundlerType;
|
|
13
|
+
patchMFConfig(mfConfig, isServer, remoteIpStrategy);
|
|
14
|
+
patchBundlerConfig({
|
|
15
|
+
bundlerType,
|
|
16
|
+
bundlerConfig: config,
|
|
17
|
+
isServer,
|
|
18
|
+
modernjsConfig,
|
|
19
|
+
mfConfig
|
|
20
|
+
});
|
|
21
|
+
}
|
|
11
22
|
var moduleFederationConfigPlugin = function(userConfig) {
|
|
12
23
|
return {
|
|
13
24
|
name: "@modern-js/plugin-module-federation-config",
|
|
@@ -19,7 +30,7 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
19
30
|
],
|
|
20
31
|
setup: function() {
|
|
21
32
|
var _ref = _async_to_generator(function(api) {
|
|
22
|
-
var
|
|
33
|
+
var modernjsConfig, mfConfig, csrConfig, ssrConfig;
|
|
23
34
|
return _ts_generator(this, function(_state) {
|
|
24
35
|
switch (_state.label) {
|
|
25
36
|
case 0:
|
|
@@ -34,26 +45,11 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
34
45
|
ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
|
|
35
46
|
userConfig.ssrConfig = ssrConfig;
|
|
36
47
|
userConfig.csrConfig = csrConfig;
|
|
37
|
-
enableSSR = (_userConfig_userConfig_ssr = (_userConfig_userConfig = userConfig.userConfig) === null || _userConfig_userConfig === void 0 ? void 0 : _userConfig_userConfig.ssr) !== null && _userConfig_userConfig_ssr !== void 0 ? _userConfig_userConfig_ssr : Boolean(modernjsConfig === null || modernjsConfig === void 0 ? void 0 : (_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
38
|
-
api.modifyBundlerChain(function(chain, param) {
|
|
39
|
-
var isProd = param.isProd, isServer = param.isServer;
|
|
40
|
-
addMyTypes2Ignored(chain, isServer ? ssrConfig : csrConfig);
|
|
41
|
-
var targetMFConfig = isServer ? ssrConfig : csrConfig;
|
|
42
|
-
patchMFConfig(targetMFConfig, isServer, userConfig.remoteIpStrategy || "ipv4");
|
|
43
|
-
patchBundlerConfig({
|
|
44
|
-
// @ts-expect-error chain type is not correct
|
|
45
|
-
chain,
|
|
46
|
-
isServer,
|
|
47
|
-
modernjsConfig,
|
|
48
|
-
mfConfig,
|
|
49
|
-
enableSSR
|
|
50
|
-
});
|
|
51
|
-
userConfig.distOutputDir = chain.output.get("path") || path.resolve(process.cwd(), "dist");
|
|
52
|
-
});
|
|
53
48
|
api.config(function() {
|
|
54
|
-
var _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
49
|
+
var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
55
50
|
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
56
51
|
var ipv4 = getIPV4();
|
|
52
|
+
var enableSSR = ((_userConfig_userConfig = userConfig.userConfig) === null || _userConfig_userConfig === void 0 ? void 0 : _userConfig_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);
|
|
57
53
|
if (userConfig.remoteIpStrategy === void 0) {
|
|
58
54
|
if (!enableSSR) {
|
|
59
55
|
userConfig.remoteIpStrategy = "inherit";
|
|
@@ -64,6 +60,36 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
64
60
|
var _modernjsConfig_source_enableAsyncEntry;
|
|
65
61
|
return {
|
|
66
62
|
tools: {
|
|
63
|
+
bundlerChain: function bundlerChain(chain, param) {
|
|
64
|
+
var isServer = param.isServer;
|
|
65
|
+
addMyTypes2Ignored(chain, isServer ? ssrConfig : csrConfig);
|
|
66
|
+
},
|
|
67
|
+
rspack: function rspack(config, param) {
|
|
68
|
+
var isServer = param.isServer;
|
|
69
|
+
var _config_output;
|
|
70
|
+
modifyBundlerConfig({
|
|
71
|
+
bundlerType,
|
|
72
|
+
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
73
|
+
config,
|
|
74
|
+
isServer,
|
|
75
|
+
modernjsConfig,
|
|
76
|
+
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
77
|
+
});
|
|
78
|
+
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
79
|
+
},
|
|
80
|
+
webpack: function webpack(config, param) {
|
|
81
|
+
var isServer = param.isServer;
|
|
82
|
+
var _config_output;
|
|
83
|
+
modifyBundlerConfig({
|
|
84
|
+
bundlerType,
|
|
85
|
+
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
86
|
+
config,
|
|
87
|
+
isServer,
|
|
88
|
+
modernjsConfig,
|
|
89
|
+
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
90
|
+
});
|
|
91
|
+
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || path.resolve(process.cwd(), "dist");
|
|
92
|
+
},
|
|
67
93
|
devServer: {
|
|
68
94
|
headers: {
|
|
69
95
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -102,6 +128,7 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
102
128
|
var configPlugin_default = moduleFederationConfigPlugin;
|
|
103
129
|
export {
|
|
104
130
|
configPlugin_default as default,
|
|
131
|
+
modifyBundlerConfig,
|
|
105
132
|
moduleFederationConfigPlugin,
|
|
106
133
|
setEnv
|
|
107
134
|
};
|
package/dist/esm/cli/index.js
CHANGED
|
@@ -24,36 +24,43 @@ var moduleFederationPlugin = function() {
|
|
|
24
24
|
var modernjsConfig;
|
|
25
25
|
return _ts_generator(this, function(_state) {
|
|
26
26
|
modernjsConfig = api.getConfig();
|
|
27
|
-
api.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return internalModernPluginOptions.browserPlugin;
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
if (bundlerType === "webpack") {
|
|
41
|
-
var _modernjsConfig_source;
|
|
42
|
-
var enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
43
|
-
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
44
|
-
var asyncBoundaryPluginOptions = _type_of(browserPluginOptions.async) === "object" ? browserPluginOptions.async : {
|
|
45
|
-
eager: function(module) {
|
|
46
|
-
return module && /\.federation/.test((module === null || module === void 0 ? void 0 : module.request) || "");
|
|
47
|
-
},
|
|
48
|
-
excludeChunk: function(chunk) {
|
|
49
|
-
return chunk.name === browserPluginOptions.name;
|
|
27
|
+
api.config(function() {
|
|
28
|
+
return {
|
|
29
|
+
tools: {
|
|
30
|
+
rspack: function rspack(config, param) {
|
|
31
|
+
var isServer = param.isServer;
|
|
32
|
+
var browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
33
|
+
if (!isServer) {
|
|
34
|
+
var _config_plugins;
|
|
35
|
+
internalModernPluginOptions.browserPlugin = new RspackModuleFederationPlugin(browserPluginOptions);
|
|
36
|
+
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
|
|
50
37
|
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
},
|
|
39
|
+
webpack: function webpack(config, param) {
|
|
40
|
+
var isServer = param.isServer;
|
|
41
|
+
var _modernjsConfig_source;
|
|
42
|
+
var browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
43
|
+
if (!isServer) {
|
|
44
|
+
var _config_plugins;
|
|
45
|
+
internalModernPluginOptions.browserPlugin = new WebpackModuleFederationPlugin(browserPluginOptions);
|
|
46
|
+
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
|
|
47
|
+
}
|
|
48
|
+
var enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
49
|
+
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
50
|
+
var _config_plugins1;
|
|
51
|
+
var asyncBoundaryPluginOptions = _type_of(browserPluginOptions.async) === "object" ? browserPluginOptions.async : {
|
|
52
|
+
eager: function(module) {
|
|
53
|
+
return module && /\.federation/.test((module === null || module === void 0 ? void 0 : module.request) || "");
|
|
54
|
+
},
|
|
55
|
+
excludeChunk: function(chunk) {
|
|
56
|
+
return chunk.name === browserPluginOptions.name;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
(_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(new AsyncBoundaryPlugin(asyncBoundaryPluginOptions));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
55
62
|
}
|
|
56
|
-
}
|
|
63
|
+
};
|
|
57
64
|
});
|
|
58
65
|
return [
|
|
59
66
|
2
|
package/dist/esm/cli/manifest.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { fs } from "@modern-js/utils";
|
|
3
|
-
|
|
3
|
+
import { MODERN_JS_SERVER_DIR } from "../constant";
|
|
4
|
+
function mergeStats(browserStats, nodeStats) {
|
|
4
5
|
var ssrRemoteEntry = nodeStats.metaData.remoteEntry;
|
|
5
|
-
ssrRemoteEntry.path =
|
|
6
|
+
ssrRemoteEntry.path = MODERN_JS_SERVER_DIR;
|
|
6
7
|
browserStats.metaData.ssrRemoteEntry = ssrRemoteEntry;
|
|
7
8
|
return browserStats;
|
|
8
9
|
}
|
|
9
|
-
function mergeManifest(browserManifest, nodeManifest
|
|
10
|
+
function mergeManifest(browserManifest, nodeManifest) {
|
|
10
11
|
var ssrRemoteEntry = nodeManifest.metaData.remoteEntry;
|
|
11
|
-
ssrRemoteEntry.path =
|
|
12
|
+
ssrRemoteEntry.path = MODERN_JS_SERVER_DIR;
|
|
12
13
|
browserManifest.metaData.ssrRemoteEntry = ssrRemoteEntry;
|
|
13
14
|
return browserManifest;
|
|
14
15
|
}
|
|
15
|
-
function mergeStatsAndManifest(nodePlugin, browserPlugin
|
|
16
|
+
function mergeStatsAndManifest(nodePlugin, browserPlugin) {
|
|
16
17
|
var nodeResourceInfo = nodePlugin.statsResourceInfo;
|
|
17
18
|
var browserResourceInfo = browserPlugin.statsResourceInfo;
|
|
18
19
|
if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) {
|
|
19
20
|
throw new Error("can not get browserResourceInfo or nodeResourceInfo");
|
|
20
21
|
}
|
|
21
|
-
var mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats
|
|
22
|
-
var mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest
|
|
22
|
+
var mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
|
|
23
|
+
var mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
|
|
23
24
|
return {
|
|
24
25
|
mergedStats,
|
|
25
26
|
mergedStatsFilePath: browserResourceInfo.stats.filename,
|
|
@@ -27,8 +28,8 @@ function mergeStatsAndManifest(nodePlugin, browserPlugin, ssrDir) {
|
|
|
27
28
|
mergedManifestFilePath: browserResourceInfo.manifest.filename
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
|
-
function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir
|
|
31
|
-
var _mergeStatsAndManifest = mergeStatsAndManifest(nodePlugin, browserPlugin
|
|
31
|
+
function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
|
|
32
|
+
var _mergeStatsAndManifest = mergeStatsAndManifest(nodePlugin, browserPlugin), mergedStats = _mergeStatsAndManifest.mergedStats, mergedStatsFilePath = _mergeStatsAndManifest.mergedStatsFilePath, mergedManifest = _mergeStatsAndManifest.mergedManifest, mergedManifestFilePath = _mergeStatsAndManifest.mergedManifestFilePath;
|
|
32
33
|
fs.writeFileSync(path.resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
|
|
33
34
|
fs.writeFileSync(path.resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
|
|
34
35
|
}
|
|
@@ -7,13 +7,11 @@ import { ModuleFederationPlugin as RspackModuleFederationPlugin } from "@module-
|
|
|
7
7
|
import UniverseEntryChunkTrackerPlugin from "@module-federation/node/universe-entry-chunk-tracker-plugin";
|
|
8
8
|
import { updateStatsAndManifest } from "./manifest";
|
|
9
9
|
import { isDev } from "./constant";
|
|
10
|
-
import { MODERN_JS_SERVER_DIR } from "../constant";
|
|
11
10
|
import logger from "./logger";
|
|
12
11
|
function setEnv() {
|
|
13
12
|
process.env["MF_DISABLE_EMIT_STATS"] = "true";
|
|
14
13
|
process.env["MF_SSR_PRJ"] = "true";
|
|
15
14
|
}
|
|
16
|
-
var CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
|
|
17
15
|
var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
18
16
|
return {
|
|
19
17
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
@@ -23,12 +21,10 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
23
21
|
],
|
|
24
22
|
setup: function() {
|
|
25
23
|
var _ref = _async_to_generator(function(api) {
|
|
26
|
-
var _pluginOptions_userConfig, _modernjsConfig_server, modernjsConfig,
|
|
24
|
+
var _pluginOptions_userConfig, _modernjsConfig_server, modernjsConfig, enableSSR;
|
|
27
25
|
return _ts_generator(this, function(_state) {
|
|
28
26
|
modernjsConfig = api.getConfig();
|
|
29
|
-
enableSSR = (
|
|
30
|
-
csrOutputPath = "";
|
|
31
|
-
ssrOutputPath = "";
|
|
27
|
+
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);
|
|
32
28
|
if (!enableSSR) {
|
|
33
29
|
return [
|
|
34
30
|
2
|
|
@@ -53,40 +49,35 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
53
49
|
plugins
|
|
54
50
|
};
|
|
55
51
|
});
|
|
56
|
-
api.modifyBundlerChain(function(chain, param) {
|
|
57
|
-
var isServer = param.isServer;
|
|
58
|
-
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
59
|
-
var MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
60
|
-
if (isServer) {
|
|
61
|
-
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
62
|
-
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
63
|
-
pluginOptions.ssrConfig
|
|
64
|
-
]).init(function(Plugin, args) {
|
|
65
|
-
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
66
|
-
return pluginOptions.nodePlugin;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (isServer) {
|
|
71
|
-
chain.target("async-node");
|
|
72
|
-
if (isDev) {
|
|
73
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (isDev && !isServer) {
|
|
77
|
-
chain.externals({
|
|
78
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (isServer) {
|
|
82
|
-
ssrOutputPath = chain.output.get("path") || path.resolve(process.cwd(), "dist/".concat(MODERN_JS_SERVER_DIR));
|
|
83
|
-
} else {
|
|
84
|
-
csrOutputPath = chain.output.get("path") || path.resolve(process.cwd(), "dist");
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
52
|
api.config(function() {
|
|
88
53
|
return {
|
|
89
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
|
+
},
|
|
90
81
|
devServer: {
|
|
91
82
|
before: [
|
|
92
83
|
function(req, res, next) {
|
|
@@ -112,17 +103,31 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
112
103
|
}
|
|
113
104
|
}
|
|
114
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
|
+
}
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
};
|
|
118
123
|
});
|
|
119
124
|
api.onAfterBuild(function() {
|
|
120
125
|
var nodePlugin = pluginOptions.nodePlugin, browserPlugin = pluginOptions.browserPlugin, distOutputDir = pluginOptions.distOutputDir;
|
|
121
|
-
updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir
|
|
126
|
+
updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
|
|
122
127
|
});
|
|
123
128
|
api.onDevCompileDone(function() {
|
|
124
129
|
var nodePlugin = pluginOptions.nodePlugin, browserPlugin = pluginOptions.browserPlugin, distOutputDir = pluginOptions.distOutputDir;
|
|
125
|
-
updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir
|
|
130
|
+
updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
|
|
126
131
|
});
|
|
127
132
|
return [
|
|
128
133
|
2
|
|
@@ -137,7 +142,6 @@ var moduleFederationSSRPlugin = function(pluginOptions) {
|
|
|
137
142
|
};
|
|
138
143
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
139
144
|
export {
|
|
140
|
-
CHAIN_MF_PLUGIN_ID,
|
|
141
145
|
ssrPlugin_default as default,
|
|
142
146
|
moduleFederationSSRPlugin,
|
|
143
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,43 +215,54 @@ function addMyTypes2Ignored(chain, mfConfig) {
|
|
|
216
215
|
}));
|
|
217
216
|
}
|
|
218
217
|
function patchBundlerConfig(options) {
|
|
219
|
-
var _modernjsConfig_deploy;
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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;
|
|
220
|
+
var enableSSR = Boolean((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
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
|
+
}
|
|
228
231
|
}
|
|
229
|
-
var splitChunkConfig = chain.optimization.splitChunks.entries();
|
|
230
232
|
if (!isServer) {
|
|
231
|
-
autoDeleteSplitChunkCacheGroups(mfConfig,
|
|
233
|
+
autoDeleteSplitChunkCacheGroups(mfConfig, bundlerConfig);
|
|
232
234
|
}
|
|
233
|
-
if (!isServer && enableSSR &&
|
|
234
|
-
|
|
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";
|
|
235
237
|
logger.warn('splitChunks.chunks = async is not allowed with stream SSR mode, it will auto changed to "async"');
|
|
236
238
|
}
|
|
237
|
-
if (isDev &&
|
|
238
|
-
var _modernjsConfig_dev,
|
|
239
|
-
var port = ((_modernjsConfig_dev = modernjsConfig.dev) === null || _modernjsConfig_dev === void 0 ? void 0 : _modernjsConfig_dev.port) || ((
|
|
239
|
+
if (isDev && ((_bundlerConfig_output = bundlerConfig.output) === null || _bundlerConfig_output === void 0 ? void 0 : _bundlerConfig_output.publicPath) === "auto") {
|
|
240
|
+
var _modernjsConfig_dev, _modernjsConfig_server1;
|
|
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;
|
|
240
242
|
var publicPath = "http://localhost:".concat(port, "/");
|
|
241
|
-
|
|
243
|
+
bundlerConfig.output.publicPath = publicPath;
|
|
242
244
|
}
|
|
243
245
|
if (isServer && enableSSR) {
|
|
244
|
-
var
|
|
245
|
-
var
|
|
246
|
-
|
|
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)) {
|
|
247
250
|
var suffix = "".concat(encodeName(uniqueName), "-[chunkhash].js");
|
|
248
|
-
|
|
251
|
+
output.chunkFilename = chunkFileName.replace(".js", suffix);
|
|
249
252
|
}
|
|
250
253
|
}
|
|
251
254
|
if (isDev && enableSSR && !isServer) {
|
|
252
|
-
|
|
255
|
+
bundlerConfig.resolve.fallback = _object_spread_props(_object_spread({}, bundlerConfig.resolve.fallback), {
|
|
256
|
+
crypto: false,
|
|
257
|
+
stream: false,
|
|
258
|
+
vm: false
|
|
259
|
+
});
|
|
253
260
|
}
|
|
254
261
|
if (((_modernjsConfig_deploy = modernjsConfig.deploy) === null || _modernjsConfig_deploy === void 0 ? void 0 : _modernjsConfig_deploy.microFrontend) && Object.keys(mfConfig.exposes || {}).length) {
|
|
255
|
-
|
|
262
|
+
if (!bundlerConfig.optimization) {
|
|
263
|
+
bundlerConfig.optimization = {};
|
|
264
|
+
}
|
|
265
|
+
bundlerConfig.optimization.usedExports = false;
|
|
256
266
|
}
|
|
257
267
|
}
|
|
258
268
|
var localIpv4 = "127.0.0.1";
|
|
@@ -280,10 +290,33 @@ var getIPV4 = function() {
|
|
|
280
290
|
};
|
|
281
291
|
return ipv4Interface.address;
|
|
282
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
|
+
};
|
|
283
315
|
export {
|
|
284
316
|
addMyTypes2Ignored,
|
|
285
317
|
getIPV4,
|
|
286
318
|
getMFConfig,
|
|
287
319
|
patchBundlerConfig,
|
|
320
|
+
patchIgnoreWarning,
|
|
288
321
|
patchMFConfig
|
|
289
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
|
+
}));
|