@module-federation/modern-js 0.0.0-next-20250219033929 → 0.0.0-next-20250219100104
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
|
@@ -29,7 +29,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var configPlugin_exports = {};
|
|
30
30
|
__export(configPlugin_exports, {
|
|
31
31
|
default: () => configPlugin_default,
|
|
32
|
-
modifyBundlerConfig: () => modifyBundlerConfig,
|
|
33
32
|
moduleFederationConfigPlugin: () => moduleFederationConfigPlugin,
|
|
34
33
|
setEnv: () => setEnv
|
|
35
34
|
});
|
|
@@ -42,17 +41,6 @@ function setEnv(enableSSR) {
|
|
|
42
41
|
process.env["MF_SSR_PRJ"] = "true";
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
|
-
function modifyBundlerConfig(options) {
|
|
46
|
-
const { mfConfig, config, isServer, modernjsConfig, remoteIpStrategy = "ipv4", bundlerType } = options;
|
|
47
|
-
(0, import_utils.patchMFConfig)(mfConfig, isServer, remoteIpStrategy);
|
|
48
|
-
(0, import_utils.patchBundlerConfig)({
|
|
49
|
-
bundlerType,
|
|
50
|
-
bundlerConfig: config,
|
|
51
|
-
isServer,
|
|
52
|
-
modernjsConfig,
|
|
53
|
-
mfConfig
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
44
|
const moduleFederationConfigPlugin = (userConfig) => ({
|
|
57
45
|
name: "@modern-js/plugin-module-federation-config",
|
|
58
46
|
pre: [
|
|
@@ -68,6 +56,19 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
68
56
|
const ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
|
|
69
57
|
userConfig.ssrConfig = ssrConfig;
|
|
70
58
|
userConfig.csrConfig = csrConfig;
|
|
59
|
+
api.modifyBundlerChain((chain, { isProd, isServer }) => {
|
|
60
|
+
(0, import_utils.addMyTypes2Ignored)(chain, isServer ? ssrConfig : csrConfig);
|
|
61
|
+
const targetMFConfig = isServer ? ssrConfig : csrConfig;
|
|
62
|
+
(0, import_utils.patchMFConfig)(targetMFConfig, isServer, userConfig.remoteIpStrategy || "ipv4");
|
|
63
|
+
(0, import_utils.patchBundlerConfig)({
|
|
64
|
+
// @ts-expect-error chain type is not correct
|
|
65
|
+
chain,
|
|
66
|
+
isServer,
|
|
67
|
+
modernjsConfig,
|
|
68
|
+
mfConfig
|
|
69
|
+
});
|
|
70
|
+
userConfig.distOutputDir = chain.output.get("path") || import_path.default.resolve(process.cwd(), "dist");
|
|
71
|
+
});
|
|
71
72
|
api.config(() => {
|
|
72
73
|
var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
73
74
|
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
@@ -83,33 +84,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
83
84
|
var _modernjsConfig_source_enableAsyncEntry;
|
|
84
85
|
return {
|
|
85
86
|
tools: {
|
|
86
|
-
bundlerChain(chain, { isServer }) {
|
|
87
|
-
(0, import_utils.addMyTypes2Ignored)(chain, isServer ? ssrConfig : csrConfig);
|
|
88
|
-
},
|
|
89
|
-
rspack(config, { isServer }) {
|
|
90
|
-
var _config_output;
|
|
91
|
-
modifyBundlerConfig({
|
|
92
|
-
bundlerType,
|
|
93
|
-
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
94
|
-
config,
|
|
95
|
-
isServer,
|
|
96
|
-
modernjsConfig,
|
|
97
|
-
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
98
|
-
});
|
|
99
|
-
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || import_path.default.resolve(process.cwd(), "dist");
|
|
100
|
-
},
|
|
101
|
-
webpack(config, { isServer }) {
|
|
102
|
-
var _config_output;
|
|
103
|
-
modifyBundlerConfig({
|
|
104
|
-
bundlerType,
|
|
105
|
-
mfConfig: isServer ? ssrConfig : csrConfig,
|
|
106
|
-
config,
|
|
107
|
-
isServer,
|
|
108
|
-
modernjsConfig,
|
|
109
|
-
remoteIpStrategy: userConfig.remoteIpStrategy
|
|
110
|
-
});
|
|
111
|
-
userConfig.distOutputDir = ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || import_path.default.resolve(process.cwd(), "dist");
|
|
112
|
-
},
|
|
113
87
|
devServer: {
|
|
114
88
|
headers: {
|
|
115
89
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -138,7 +112,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
|
|
|
138
112
|
var configPlugin_default = moduleFederationConfigPlugin;
|
|
139
113
|
// Annotate the CommonJS export names for ESM import in node:
|
|
140
114
|
0 && (module.exports = {
|
|
141
|
-
modifyBundlerConfig,
|
|
142
115
|
moduleFederationConfigPlugin,
|
|
143
116
|
setEnv
|
|
144
117
|
});
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -43,37 +43,33 @@ const moduleFederationPlugin = (userConfig = {}) => {
|
|
|
43
43
|
name: "@modern-js/plugin-module-federation",
|
|
44
44
|
setup: async (api) => {
|
|
45
45
|
const modernjsConfig = api.getConfig();
|
|
46
|
-
api.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
};
|
|
72
|
-
(_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(new import_enhanced.AsyncBoundaryPlugin(asyncBoundaryPluginOptions));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
46
|
+
api.modifyBundlerChain((chain, { isServer }) => {
|
|
47
|
+
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
48
|
+
console.log("index bundlerType", bundlerType);
|
|
49
|
+
console.log("index isServer", isServer);
|
|
50
|
+
const browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
51
|
+
const MFPlugin = bundlerType === "webpack" ? import_enhanced.ModuleFederationPlugin : import_rspack.ModuleFederationPlugin;
|
|
52
|
+
if (!isServer) {
|
|
53
|
+
chain.plugin("plugin-module-federation").use(MFPlugin, [
|
|
54
|
+
browserPluginOptions
|
|
55
|
+
]).init((Plugin, args) => {
|
|
56
|
+
internalModernPluginOptions.browserPlugin = new Plugin(args[0]);
|
|
57
|
+
return internalModernPluginOptions.browserPlugin;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (bundlerType === "webpack") {
|
|
61
|
+
var _modernjsConfig_source;
|
|
62
|
+
const enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
63
|
+
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
64
|
+
const asyncBoundaryPluginOptions = typeof browserPluginOptions.async === "object" ? browserPluginOptions.async : {
|
|
65
|
+
eager: (module2) => module2 && /\.federation/.test((module2 === null || module2 === void 0 ? void 0 : module2.request) || ""),
|
|
66
|
+
excludeChunk: (chunk) => chunk.name === browserPluginOptions.name
|
|
67
|
+
};
|
|
68
|
+
chain.plugin("async-boundary-plugin").use(import_enhanced.AsyncBoundaryPlugin, [
|
|
69
|
+
asyncBoundaryPluginOptions
|
|
70
|
+
]);
|
|
75
71
|
}
|
|
76
|
-
}
|
|
72
|
+
}
|
|
77
73
|
});
|
|
78
74
|
},
|
|
79
75
|
usePlugins: [
|
|
@@ -28,6 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var ssrPlugin_exports = {};
|
|
30
30
|
__export(ssrPlugin_exports, {
|
|
31
|
+
CHAIN_MF_PLUGIN_ID: () => CHAIN_MF_PLUGIN_ID,
|
|
31
32
|
default: () => ssrPlugin_default,
|
|
32
33
|
moduleFederationSSRPlugin: () => moduleFederationSSRPlugin,
|
|
33
34
|
setEnv: () => setEnv
|
|
@@ -45,6 +46,7 @@ function setEnv() {
|
|
|
45
46
|
process.env["MF_DISABLE_EMIT_STATS"] = "true";
|
|
46
47
|
process.env["MF_SSR_PRJ"] = "true";
|
|
47
48
|
}
|
|
49
|
+
const CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
|
|
48
50
|
const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
49
51
|
name: "@modern-js/plugin-module-federation-ssr",
|
|
50
52
|
pre: [
|
|
@@ -55,6 +57,8 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
55
57
|
var _pluginOptions_userConfig, _modernjsConfig_server;
|
|
56
58
|
const modernjsConfig = api.getConfig();
|
|
57
59
|
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);
|
|
60
|
+
console.log("enableSSR: ", enableSSR);
|
|
61
|
+
console.log("isDev: ", import_constant.isDev);
|
|
58
62
|
if (!enableSSR) {
|
|
59
63
|
return;
|
|
60
64
|
}
|
|
@@ -76,33 +80,36 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
76
80
|
plugins
|
|
77
81
|
};
|
|
78
82
|
});
|
|
83
|
+
api.modifyBundlerChain((chain, { isServer }) => {
|
|
84
|
+
const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
85
|
+
console.log("ssrPlugin bundlerType: ", bundlerType);
|
|
86
|
+
console.log("ssrPlugin isServer: ", isServer);
|
|
87
|
+
const MFPlugin = bundlerType === "webpack" ? import_webpack.ModuleFederationPlugin : import_rspack.ModuleFederationPlugin;
|
|
88
|
+
if (isServer) {
|
|
89
|
+
if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
|
|
90
|
+
chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
|
|
91
|
+
pluginOptions.ssrConfig
|
|
92
|
+
]).init((Plugin, args) => {
|
|
93
|
+
pluginOptions.nodePlugin = new Plugin(args[0]);
|
|
94
|
+
return pluginOptions.nodePlugin;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (isServer) {
|
|
99
|
+
chain.target("async-node");
|
|
100
|
+
if (import_constant.isDev) {
|
|
101
|
+
chain.plugin("UniverseEntryChunkTrackerPlugin").use(import_universe_entry_chunk_tracker_plugin.default);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (import_constant.isDev && !isServer) {
|
|
105
|
+
chain.externals({
|
|
106
|
+
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
});
|
|
79
110
|
api.config(() => {
|
|
80
111
|
return {
|
|
81
112
|
tools: {
|
|
82
|
-
rspack(config, { isServer }) {
|
|
83
|
-
if (isServer) {
|
|
84
|
-
if (!pluginOptions.nodePlugin) {
|
|
85
|
-
var _config_plugins;
|
|
86
|
-
pluginOptions.nodePlugin = new import_rspack.ModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
87
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
var _config_output;
|
|
91
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || import_path.default.resolve(process.cwd(), "dist");
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
webpack(config, { isServer }) {
|
|
95
|
-
if (isServer) {
|
|
96
|
-
if (!pluginOptions.nodePlugin) {
|
|
97
|
-
var _config_plugins;
|
|
98
|
-
pluginOptions.nodePlugin = new import_webpack.ModuleFederationPlugin(pluginOptions.ssrConfig);
|
|
99
|
-
(_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(pluginOptions.nodePlugin);
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
var _config_output;
|
|
103
|
-
pluginOptions.distOutputDir = pluginOptions.distOutputDir || ((_config_output = config.output) === null || _config_output === void 0 ? void 0 : _config_output.path) || import_path.default.resolve(process.cwd(), "dist");
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
113
|
devServer: {
|
|
107
114
|
before: [
|
|
108
115
|
(req, res, next) => {
|
|
@@ -128,19 +135,6 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
128
135
|
}
|
|
129
136
|
}
|
|
130
137
|
]
|
|
131
|
-
},
|
|
132
|
-
bundlerChain(chain, { isServer }) {
|
|
133
|
-
if (isServer) {
|
|
134
|
-
chain.target("async-node");
|
|
135
|
-
if (import_constant.isDev) {
|
|
136
|
-
chain.plugin("UniverseEntryChunkTrackerPlugin").use(import_universe_entry_chunk_tracker_plugin.default);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (import_constant.isDev && !isServer) {
|
|
140
|
-
chain.externals({
|
|
141
|
-
"@module-federation/node/utils": "NOT_USED_IN_BROWSER"
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
138
|
}
|
|
145
139
|
}
|
|
146
140
|
};
|
|
@@ -158,6 +152,7 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
|
|
|
158
152
|
var ssrPlugin_default = moduleFederationSSRPlugin;
|
|
159
153
|
// Annotate the CommonJS export names for ESM import in node:
|
|
160
154
|
0 && (module.exports = {
|
|
155
|
+
CHAIN_MF_PLUGIN_ID,
|
|
161
156
|
moduleFederationSSRPlugin,
|
|
162
157
|
setEnv
|
|
163
158
|
});
|
package/dist/cjs/cli/utils.js
CHANGED
|
@@ -32,7 +32,6 @@ __export(utils_exports, {
|
|
|
32
32
|
getIPV4: () => getIPV4,
|
|
33
33
|
getMFConfig: () => getMFConfig,
|
|
34
34
|
patchBundlerConfig: () => patchBundlerConfig,
|
|
35
|
-
patchIgnoreWarning: () => patchIgnoreWarning,
|
|
36
35
|
patchMFConfig: () => patchMFConfig
|
|
37
36
|
});
|
|
38
37
|
module.exports = __toCommonJS(utils_exports);
|
|
@@ -173,19 +172,20 @@ const patchMFConfig = (mfConfig, isServer, remoteIpStrategy) => {
|
|
|
173
172
|
mfConfig.dev = false;
|
|
174
173
|
return mfConfig;
|
|
175
174
|
};
|
|
176
|
-
function patchIgnoreWarning(
|
|
177
|
-
|
|
175
|
+
function patchIgnoreWarning(chain) {
|
|
176
|
+
const ignoreWarnings = chain.get("ignoreWarnings") || [];
|
|
178
177
|
const ignoredMsgs = [
|
|
179
178
|
"external script",
|
|
180
179
|
"process.env.WS_NO_BUFFER_UTIL",
|
|
181
180
|
`Can't resolve 'utf-8-validate`
|
|
182
181
|
];
|
|
183
|
-
|
|
182
|
+
ignoreWarnings.push((warning) => {
|
|
184
183
|
if (ignoredMsgs.some((msg) => warning.message.includes(msg))) {
|
|
185
184
|
return true;
|
|
186
185
|
}
|
|
187
186
|
return false;
|
|
188
187
|
});
|
|
188
|
+
chain.ignoreWarnings(ignoreWarnings);
|
|
189
189
|
}
|
|
190
190
|
function addMyTypes2Ignored(chain, mfConfig) {
|
|
191
191
|
const watchOptions = chain.get("watchOptions");
|
|
@@ -224,55 +224,43 @@ function addMyTypes2Ignored(chain, mfConfig) {
|
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
226
|
function patchBundlerConfig(options) {
|
|
227
|
-
var _modernjsConfig_server,
|
|
228
|
-
const {
|
|
227
|
+
var _modernjsConfig_server, _modernjsConfig_deploy;
|
|
228
|
+
const { chain, modernjsConfig, isServer, mfConfig } = options;
|
|
229
229
|
const enableSSR = Boolean((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
if (!((_bundlerConfig_output2 = bundlerConfig.output) === null || _bundlerConfig_output2 === void 0 ? void 0 : _bundlerConfig_output2.uniqueName)) {
|
|
238
|
-
bundlerConfig.output.uniqueName = mfConfig.name;
|
|
239
|
-
}
|
|
230
|
+
chain.optimization.delete("runtimeChunk");
|
|
231
|
+
if (!chain.output.get("chunkLoadingGlobal")) {
|
|
232
|
+
chain.output.chunkLoadingGlobal(`chunk_${mfConfig.name}`);
|
|
233
|
+
}
|
|
234
|
+
if (!chain.output.get("uniqueName")) {
|
|
235
|
+
chain.output.uniqueName(mfConfig.name);
|
|
240
236
|
}
|
|
237
|
+
const splitChunkConfig = chain.optimization.entries();
|
|
241
238
|
if (!isServer) {
|
|
242
|
-
(0, import_utils.autoDeleteSplitChunkCacheGroups)(mfConfig,
|
|
239
|
+
(0, import_utils.autoDeleteSplitChunkCacheGroups)(mfConfig, splitChunkConfig);
|
|
243
240
|
}
|
|
244
|
-
if (!isServer && enableSSR &&
|
|
245
|
-
|
|
241
|
+
if (!isServer && enableSSR && splitChunkConfig && typeof splitChunkConfig === "object" && splitChunkConfig.cacheGroups) {
|
|
242
|
+
splitChunkConfig.chunks = "async";
|
|
246
243
|
import_logger.default.warn(`splitChunks.chunks = async is not allowed with stream SSR mode, it will auto changed to "async"`);
|
|
247
244
|
}
|
|
248
|
-
if (isDev &&
|
|
245
|
+
if (isDev && chain.output.get("publicPath") === "auto") {
|
|
249
246
|
var _modernjsConfig_dev, _modernjsConfig_server1;
|
|
250
247
|
const 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;
|
|
251
248
|
const publicPath = `http://localhost:${port}/`;
|
|
252
|
-
|
|
249
|
+
chain.output.publicPath(publicPath);
|
|
253
250
|
}
|
|
254
251
|
if (isServer && enableSSR) {
|
|
255
|
-
const
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
if (output && typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
|
|
252
|
+
const uniqueName = mfConfig.name || chain.output.get("uniqueName");
|
|
253
|
+
const chunkFileName = chain.output.get("chunkFilename");
|
|
254
|
+
if (typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
|
|
259
255
|
const suffix = `${(0, import_sdk.encodeName)(uniqueName)}-[chunkhash].js`;
|
|
260
|
-
output.chunkFilename
|
|
256
|
+
chain.output.chunkFilename(chunkFileName.replace(".js", suffix));
|
|
261
257
|
}
|
|
262
258
|
}
|
|
263
259
|
if (isDev && enableSSR && !isServer) {
|
|
264
|
-
|
|
265
|
-
...bundlerConfig.resolve.fallback,
|
|
266
|
-
crypto: false,
|
|
267
|
-
stream: false,
|
|
268
|
-
vm: false
|
|
269
|
-
};
|
|
260
|
+
chain.resolve.fallback.set("crypto", false).set("stream", false).set("vm", false);
|
|
270
261
|
}
|
|
271
262
|
if (((_modernjsConfig_deploy = modernjsConfig.deploy) === null || _modernjsConfig_deploy === void 0 ? void 0 : _modernjsConfig_deploy.microFrontend) && Object.keys(mfConfig.exposes || {}).length) {
|
|
272
|
-
|
|
273
|
-
bundlerConfig.optimization = {};
|
|
274
|
-
}
|
|
275
|
-
bundlerConfig.optimization.usedExports = false;
|
|
263
|
+
chain.optimization.usedExports(false);
|
|
276
264
|
}
|
|
277
265
|
}
|
|
278
266
|
const localIpv4 = "127.0.0.1";
|
|
@@ -300,34 +288,11 @@ const getIPV4 = () => {
|
|
|
300
288
|
};
|
|
301
289
|
return ipv4Interface.address;
|
|
302
290
|
};
|
|
303
|
-
const SPLIT_CHUNK_MAP = {
|
|
304
|
-
REACT: "react",
|
|
305
|
-
ROUTER: "router",
|
|
306
|
-
LODASH: "lib-lodash",
|
|
307
|
-
ANTD: "lib-antd",
|
|
308
|
-
ARCO: "lib-arco",
|
|
309
|
-
SEMI: "lib-semi",
|
|
310
|
-
AXIOS: "lib-axios"
|
|
311
|
-
};
|
|
312
|
-
const SHARED_SPLIT_CHUNK_MAP = {
|
|
313
|
-
react: SPLIT_CHUNK_MAP.REACT,
|
|
314
|
-
"react-dom": SPLIT_CHUNK_MAP.REACT,
|
|
315
|
-
"react-router": SPLIT_CHUNK_MAP.ROUTER,
|
|
316
|
-
"react-router-dom": SPLIT_CHUNK_MAP.ROUTER,
|
|
317
|
-
"@remix-run/router": SPLIT_CHUNK_MAP.ROUTER,
|
|
318
|
-
lodash: SPLIT_CHUNK_MAP.LODASH,
|
|
319
|
-
"lodash-es": SPLIT_CHUNK_MAP.LODASH,
|
|
320
|
-
antd: SPLIT_CHUNK_MAP.ANTD,
|
|
321
|
-
"@arco-design/web-react": SPLIT_CHUNK_MAP.ARCO,
|
|
322
|
-
"@douyinfe/semi-ui": SPLIT_CHUNK_MAP.SEMI,
|
|
323
|
-
axios: SPLIT_CHUNK_MAP.AXIOS
|
|
324
|
-
};
|
|
325
291
|
// Annotate the CommonJS export names for ESM import in node:
|
|
326
292
|
0 && (module.exports = {
|
|
327
293
|
addMyTypes2Ignored,
|
|
328
294
|
getIPV4,
|
|
329
295
|
getMFConfig,
|
|
330
296
|
patchBundlerConfig,
|
|
331
|
-
patchIgnoreWarning,
|
|
332
297
|
patchMFConfig
|
|
333
298
|
});
|
|
@@ -109,63 +109,3 @@ const mfConfig = {
|
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
});
|
|
112
|
-
(0, import_vitest.describe)("patchBundlerConfig", async () => {
|
|
113
|
-
(0, import_vitest.it)("patchBundlerConfig: server", async () => {
|
|
114
|
-
const bundlerConfig = {
|
|
115
|
-
output: {
|
|
116
|
-
publicPath: "auto"
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
(0, import_utils.patchBundlerConfig)({
|
|
120
|
-
bundlerType: "webpack",
|
|
121
|
-
bundlerConfig,
|
|
122
|
-
isServer: true,
|
|
123
|
-
modernjsConfig: {
|
|
124
|
-
server: {
|
|
125
|
-
ssr: {
|
|
126
|
-
mode: "stream"
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
mfConfig
|
|
131
|
-
});
|
|
132
|
-
const expectedConfig = {
|
|
133
|
-
output: {
|
|
134
|
-
chunkLoadingGlobal: "chunk_host",
|
|
135
|
-
publicPath: "auto",
|
|
136
|
-
uniqueName: "host"
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
bundlerConfig === null || bundlerConfig === void 0 ? true : delete bundlerConfig.ignoreWarnings;
|
|
140
|
-
(0, import_vitest.expect)(bundlerConfig).toStrictEqual(expectedConfig);
|
|
141
|
-
});
|
|
142
|
-
(0, import_vitest.it)("patchBundlerConfig: client", async () => {
|
|
143
|
-
const bundlerConfig = {
|
|
144
|
-
output: {
|
|
145
|
-
publicPath: "auto"
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
(0, import_utils.patchBundlerConfig)({
|
|
149
|
-
bundlerType: "webpack",
|
|
150
|
-
bundlerConfig,
|
|
151
|
-
isServer: false,
|
|
152
|
-
modernjsConfig: {
|
|
153
|
-
server: {
|
|
154
|
-
ssr: {
|
|
155
|
-
mode: "stream"
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
mfConfig
|
|
160
|
-
});
|
|
161
|
-
const expectedConfig = {
|
|
162
|
-
output: {
|
|
163
|
-
chunkLoadingGlobal: "chunk_host",
|
|
164
|
-
publicPath: "auto",
|
|
165
|
-
uniqueName: "host"
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
bundlerConfig === null || bundlerConfig === void 0 ? true : delete bundlerConfig.ignoreWarnings;
|
|
169
|
-
(0, import_vitest.expect)(bundlerConfig).toStrictEqual(expectedConfig);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
@@ -8,17 +8,6 @@ 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
|
-
}
|
|
22
11
|
var moduleFederationConfigPlugin = function(userConfig) {
|
|
23
12
|
return {
|
|
24
13
|
name: "@modern-js/plugin-module-federation-config",
|
|
@@ -45,6 +34,20 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
45
34
|
ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
|
|
46
35
|
userConfig.ssrConfig = ssrConfig;
|
|
47
36
|
userConfig.csrConfig = csrConfig;
|
|
37
|
+
api.modifyBundlerChain(function(chain, param) {
|
|
38
|
+
var isProd = param.isProd, isServer = param.isServer;
|
|
39
|
+
addMyTypes2Ignored(chain, isServer ? ssrConfig : csrConfig);
|
|
40
|
+
var targetMFConfig = isServer ? ssrConfig : csrConfig;
|
|
41
|
+
patchMFConfig(targetMFConfig, isServer, userConfig.remoteIpStrategy || "ipv4");
|
|
42
|
+
patchBundlerConfig({
|
|
43
|
+
// @ts-expect-error chain type is not correct
|
|
44
|
+
chain,
|
|
45
|
+
isServer,
|
|
46
|
+
modernjsConfig,
|
|
47
|
+
mfConfig
|
|
48
|
+
});
|
|
49
|
+
userConfig.distOutputDir = chain.output.get("path") || path.resolve(process.cwd(), "dist");
|
|
50
|
+
});
|
|
48
51
|
api.config(function() {
|
|
49
52
|
var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
|
|
50
53
|
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
@@ -60,36 +63,6 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
60
63
|
var _modernjsConfig_source_enableAsyncEntry;
|
|
61
64
|
return {
|
|
62
65
|
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
|
-
},
|
|
93
66
|
devServer: {
|
|
94
67
|
headers: {
|
|
95
68
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -128,7 +101,6 @@ var moduleFederationConfigPlugin = function(userConfig) {
|
|
|
128
101
|
var configPlugin_default = moduleFederationConfigPlugin;
|
|
129
102
|
export {
|
|
130
103
|
configPlugin_default as default,
|
|
131
|
-
modifyBundlerConfig,
|
|
132
104
|
moduleFederationConfigPlugin,
|
|
133
105
|
setEnv
|
|
134
106
|
};
|
package/dist/esm/cli/index.js
CHANGED
|
@@ -24,43 +24,38 @@ 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
|
-
|
|
27
|
+
api.modifyBundlerChain(function(chain, param) {
|
|
28
|
+
var isServer = param.isServer;
|
|
29
|
+
var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
|
|
30
|
+
console.log("index bundlerType", bundlerType);
|
|
31
|
+
console.log("index isServer", isServer);
|
|
32
|
+
var browserPluginOptions = internalModernPluginOptions.csrConfig;
|
|
33
|
+
var MFPlugin = bundlerType === "webpack" ? WebpackModuleFederationPlugin : RspackModuleFederationPlugin;
|
|
34
|
+
if (!isServer) {
|
|
35
|
+
chain.plugin("plugin-module-federation").use(MFPlugin, [
|
|
36
|
+
browserPluginOptions
|
|
37
|
+
]).init(function(Plugin, args) {
|
|
38
|
+
internalModernPluginOptions.browserPlugin = new Plugin(args[0]);
|
|
39
|
+
return internalModernPluginOptions.browserPlugin;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (bundlerType === "webpack") {
|
|
43
|
+
var _modernjsConfig_source;
|
|
44
|
+
var enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
|
|
45
|
+
if (!enableAsyncEntry && browserPluginOptions.async !== false) {
|
|
46
|
+
var asyncBoundaryPluginOptions = _type_of(browserPluginOptions.async) === "object" ? browserPluginOptions.async : {
|
|
47
|
+
eager: function(module) {
|
|
48
|
+
return module && /\.federation/.test((module === null || module === void 0 ? void 0 : module.request) || "");
|
|
49
|
+
},
|
|
50
|
+
excludeChunk: function(chunk) {
|
|
51
|
+
return chunk.name === browserPluginOptions.name;
|
|
37
52
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
}
|
|
53
|
+
};
|
|
54
|
+
chain.plugin("async-boundary-plugin").use(AsyncBoundaryPlugin, [
|
|
55
|
+
asyncBoundaryPluginOptions
|
|
56
|
+
]);
|
|
62
57
|
}
|
|
63
|
-
}
|
|
58
|
+
}
|
|
64
59
|
});
|
|
65
60
|
return [
|
|
66
61
|
2
|