@module-federation/modern-js 0.9.1 → 0.10.0

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.
@@ -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: [
@@ -62,17 +50,33 @@ const moduleFederationConfigPlugin = (userConfig) => ({
62
50
  "@modern-js/plugin-module-federation"
63
51
  ],
64
52
  setup: async (api) => {
53
+ var _userConfig_userConfig, _modernjsConfig_server;
65
54
  const modernjsConfig = api.getConfig();
66
55
  const mfConfig = await (0, import_utils.getMFConfig)(userConfig.originPluginOptions);
67
56
  const csrConfig = userConfig.csrConfig || JSON.parse(JSON.stringify(mfConfig));
68
57
  const ssrConfig = userConfig.ssrConfig || JSON.parse(JSON.stringify(mfConfig));
69
58
  userConfig.ssrConfig = ssrConfig;
70
59
  userConfig.csrConfig = csrConfig;
60
+ var _userConfig_userConfig_ssr;
61
+ const 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);
62
+ api.modifyBundlerChain((chain, { isServer }) => {
63
+ (0, import_utils.addMyTypes2Ignored)(chain, isServer ? ssrConfig : csrConfig);
64
+ const targetMFConfig = isServer ? ssrConfig : csrConfig;
65
+ (0, import_utils.patchMFConfig)(targetMFConfig, isServer, userConfig.remoteIpStrategy || "ipv4");
66
+ (0, import_utils.patchBundlerConfig)({
67
+ // @ts-expect-error chain type is not correct
68
+ chain,
69
+ isServer,
70
+ modernjsConfig,
71
+ mfConfig,
72
+ enableSSR
73
+ });
74
+ userConfig.distOutputDir = chain.output.get("path") || import_path.default.resolve(process.cwd(), "dist");
75
+ });
71
76
  api.config(() => {
72
- var _userConfig_userConfig, _modernjsConfig_server, _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
77
+ var _modernjsConfig_source, _modernjsConfig_source1, _modernjsConfig_dev;
73
78
  const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
74
79
  const ipv4 = (0, import_utils.getIPV4)();
75
- const 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);
76
80
  if (userConfig.remoteIpStrategy === void 0) {
77
81
  if (!enableSSR) {
78
82
  userConfig.remoteIpStrategy = "inherit";
@@ -83,33 +87,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
83
87
  var _modernjsConfig_source_enableAsyncEntry;
84
88
  return {
85
89
  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
90
  devServer: {
114
91
  headers: {
115
92
  "Access-Control-Allow-Origin": "*",
@@ -138,7 +115,6 @@ const moduleFederationConfigPlugin = (userConfig) => ({
138
115
  var configPlugin_default = moduleFederationConfigPlugin;
139
116
  // Annotate the CommonJS export names for ESM import in node:
140
117
  0 && (module.exports = {
141
- modifyBundlerConfig,
142
118
  moduleFederationConfigPlugin,
143
119
  setEnv
144
120
  });
@@ -27,6 +27,7 @@ var import_enhanced = require("@module-federation/enhanced");
27
27
  var import_rspack = require("@module-federation/enhanced/rspack");
28
28
  var import_configPlugin = require("./configPlugin");
29
29
  var import_ssrPlugin = require("./ssrPlugin");
30
+ var import_utils = require("./utils");
30
31
  var import_enhanced2 = require("@module-federation/enhanced");
31
32
  const moduleFederationPlugin = (userConfig = {}) => {
32
33
  const internalModernPluginOptions = {
@@ -43,37 +44,31 @@ const moduleFederationPlugin = (userConfig = {}) => {
43
44
  name: "@modern-js/plugin-module-federation",
44
45
  setup: async (api) => {
45
46
  const modernjsConfig = api.getConfig();
46
- api.config(() => {
47
- return {
48
- tools: {
49
- rspack(config, { isServer }) {
50
- const browserPluginOptions = internalModernPluginOptions.csrConfig;
51
- if (!isServer) {
52
- var _config_plugins;
53
- internalModernPluginOptions.browserPlugin = new import_rspack.ModuleFederationPlugin(browserPluginOptions);
54
- (_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
55
- }
56
- },
57
- webpack(config, { isServer }) {
58
- var _modernjsConfig_source;
59
- const browserPluginOptions = internalModernPluginOptions.csrConfig;
60
- if (!isServer) {
61
- var _config_plugins;
62
- internalModernPluginOptions.browserPlugin = new import_enhanced.ModuleFederationPlugin(browserPluginOptions);
63
- (_config_plugins = config.plugins) === null || _config_plugins === void 0 ? void 0 : _config_plugins.push(internalModernPluginOptions.browserPlugin);
64
- }
65
- const enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
66
- if (!enableAsyncEntry && browserPluginOptions.async !== false) {
67
- var _config_plugins1;
68
- const asyncBoundaryPluginOptions = typeof browserPluginOptions.async === "object" ? browserPluginOptions.async : {
69
- eager: (module2) => module2 && /\.federation/.test((module2 === null || module2 === void 0 ? void 0 : module2.request) || ""),
70
- excludeChunk: (chunk) => chunk.name === browserPluginOptions.name
71
- };
72
- (_config_plugins1 = config.plugins) === null || _config_plugins1 === void 0 ? void 0 : _config_plugins1.push(new import_enhanced.AsyncBoundaryPlugin(asyncBoundaryPluginOptions));
73
- }
74
- }
47
+ api.modifyBundlerChain((chain) => {
48
+ const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
49
+ const browserPluginOptions = internalModernPluginOptions.csrConfig;
50
+ const MFPlugin = bundlerType === "webpack" ? import_enhanced.ModuleFederationPlugin : import_rspack.ModuleFederationPlugin;
51
+ if ((0, import_utils.isWebTarget)(chain.get("target"))) {
52
+ chain.plugin("plugin-module-federation").use(MFPlugin, [
53
+ browserPluginOptions
54
+ ]).init((Plugin, args) => {
55
+ internalModernPluginOptions.browserPlugin = new Plugin(args[0]);
56
+ return internalModernPluginOptions.browserPlugin;
57
+ });
58
+ }
59
+ if (bundlerType === "webpack") {
60
+ var _modernjsConfig_source;
61
+ const enableAsyncEntry = (_modernjsConfig_source = modernjsConfig.source) === null || _modernjsConfig_source === void 0 ? void 0 : _modernjsConfig_source.enableAsyncEntry;
62
+ if (!enableAsyncEntry && browserPluginOptions.async !== false) {
63
+ const asyncBoundaryPluginOptions = typeof browserPluginOptions.async === "object" ? browserPluginOptions.async : {
64
+ eager: (module2) => module2 && /\.federation/.test((module2 === null || module2 === void 0 ? void 0 : module2.request) || ""),
65
+ excludeChunk: (chunk) => chunk.name === browserPluginOptions.name
66
+ };
67
+ chain.plugin("async-boundary-plugin").use(import_enhanced.AsyncBoundaryPlugin, [
68
+ asyncBoundaryPluginOptions
69
+ ]);
75
70
  }
76
- };
71
+ }
77
72
  });
78
73
  },
79
74
  usePlugins: [
@@ -33,27 +33,26 @@ __export(manifest_exports, {
33
33
  module.exports = __toCommonJS(manifest_exports);
34
34
  var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
- var import_constant = require("../constant");
37
- function mergeStats(browserStats, nodeStats) {
36
+ function mergeStats(browserStats, nodeStats, ssrDir) {
38
37
  const ssrRemoteEntry = nodeStats.metaData.remoteEntry;
39
- ssrRemoteEntry.path = import_constant.MODERN_JS_SERVER_DIR;
38
+ ssrRemoteEntry.path = ssrDir;
40
39
  browserStats.metaData.ssrRemoteEntry = ssrRemoteEntry;
41
40
  return browserStats;
42
41
  }
43
- function mergeManifest(browserManifest, nodeManifest) {
42
+ function mergeManifest(browserManifest, nodeManifest, ssrDir) {
44
43
  const ssrRemoteEntry = nodeManifest.metaData.remoteEntry;
45
- ssrRemoteEntry.path = import_constant.MODERN_JS_SERVER_DIR;
44
+ ssrRemoteEntry.path = ssrDir;
46
45
  browserManifest.metaData.ssrRemoteEntry = ssrRemoteEntry;
47
46
  return browserManifest;
48
47
  }
49
- function mergeStatsAndManifest(nodePlugin, browserPlugin) {
48
+ function mergeStatsAndManifest(nodePlugin, browserPlugin, ssrDir) {
50
49
  const nodeResourceInfo = nodePlugin.statsResourceInfo;
51
50
  const browserResourceInfo = browserPlugin.statsResourceInfo;
52
51
  if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) {
53
52
  throw new Error("can not get browserResourceInfo or nodeResourceInfo");
54
53
  }
55
- const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
56
- const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
54
+ const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats, ssrDir);
55
+ const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest, ssrDir);
57
56
  return {
58
57
  mergedStats,
59
58
  mergedStatsFilePath: browserResourceInfo.stats.filename,
@@ -61,8 +60,8 @@ function mergeStatsAndManifest(nodePlugin, browserPlugin) {
61
60
  mergedManifestFilePath: browserResourceInfo.manifest.filename
62
61
  };
63
62
  }
64
- function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
65
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
63
+ function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir, ssrDir) {
64
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin, ssrDir);
66
65
  import_utils.fs.writeFileSync(import_path.default.resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
67
66
  import_utils.fs.writeFileSync(import_path.default.resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
68
67
  }
@@ -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
@@ -40,11 +41,14 @@ var import_rspack = require("@module-federation/enhanced/rspack");
40
41
  var import_universe_entry_chunk_tracker_plugin = __toESM(require("@module-federation/node/universe-entry-chunk-tracker-plugin"));
41
42
  var import_manifest = require("./manifest");
42
43
  var import_constant = require("./constant");
44
+ var import_constant2 = require("../constant");
43
45
  var import_logger = __toESM(require("./logger"));
46
+ var import_utils2 = require("./utils");
44
47
  function setEnv() {
45
48
  process.env["MF_DISABLE_EMIT_STATS"] = "true";
46
49
  process.env["MF_SSR_PRJ"] = "true";
47
50
  }
51
+ const CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
48
52
  const moduleFederationSSRPlugin = (pluginOptions) => ({
49
53
  name: "@modern-js/plugin-module-federation-ssr",
50
54
  pre: [
@@ -54,7 +58,10 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
54
58
  setup: async (api) => {
55
59
  var _pluginOptions_userConfig, _modernjsConfig_server;
56
60
  const modernjsConfig = api.getConfig();
57
- 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);
61
+ var _pluginOptions_userConfig_ssr;
62
+ const enableSSR = (_pluginOptions_userConfig_ssr = (_pluginOptions_userConfig = pluginOptions.userConfig) === null || _pluginOptions_userConfig === void 0 ? void 0 : _pluginOptions_userConfig.ssr) !== null && _pluginOptions_userConfig_ssr !== void 0 ? _pluginOptions_userConfig_ssr : Boolean(modernjsConfig === null || modernjsConfig === void 0 ? void 0 : (_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
63
+ let csrOutputPath = "";
64
+ let ssrOutputPath = "";
58
65
  if (!enableSSR) {
59
66
  return;
60
67
  }
@@ -76,33 +83,40 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
76
83
  plugins
77
84
  };
78
85
  });
86
+ api.modifyBundlerChain((chain, { isServer }) => {
87
+ const bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
88
+ const MFPlugin = bundlerType === "webpack" ? import_webpack.ModuleFederationPlugin : import_rspack.ModuleFederationPlugin;
89
+ const isWeb = (0, import_utils2.isWebTarget)(chain.get("target"));
90
+ if (!isWeb) {
91
+ if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
92
+ chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
93
+ pluginOptions.ssrConfig
94
+ ]).init((Plugin, args) => {
95
+ pluginOptions.nodePlugin = new Plugin(args[0]);
96
+ return pluginOptions.nodePlugin;
97
+ });
98
+ }
99
+ }
100
+ if (!isWeb) {
101
+ chain.target("async-node");
102
+ if (import_constant.isDev) {
103
+ chain.plugin("UniverseEntryChunkTrackerPlugin").use(import_universe_entry_chunk_tracker_plugin.default);
104
+ }
105
+ }
106
+ if (import_constant.isDev && !isServer) {
107
+ chain.externals({
108
+ "@module-federation/node/utils": "NOT_USED_IN_BROWSER"
109
+ });
110
+ }
111
+ if (isServer) {
112
+ ssrOutputPath = chain.output.get("path") || import_path.default.resolve(process.cwd(), `dist/${import_constant2.MODERN_JS_SERVER_DIR}`);
113
+ } else {
114
+ csrOutputPath = chain.output.get("path") || import_path.default.resolve(process.cwd(), "dist");
115
+ }
116
+ });
79
117
  api.config(() => {
80
118
  return {
81
119
  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
120
  devServer: {
107
121
  before: [
108
122
  (req, res, next) => {
@@ -128,36 +142,24 @@ const moduleFederationSSRPlugin = (pluginOptions) => ({
128
142
  }
129
143
  }
130
144
  ]
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
145
  }
145
146
  }
146
147
  };
147
148
  });
148
149
  api.onAfterBuild(() => {
149
150
  const { nodePlugin, browserPlugin, distOutputDir } = pluginOptions;
150
- (0, import_manifest.updateStatsAndManifest)(nodePlugin, browserPlugin, distOutputDir);
151
+ (0, import_manifest.updateStatsAndManifest)(nodePlugin, browserPlugin, distOutputDir, import_path.default.relative(csrOutputPath, ssrOutputPath));
151
152
  });
152
153
  api.onDevCompileDone(() => {
153
154
  const { nodePlugin, browserPlugin, distOutputDir } = pluginOptions;
154
- (0, import_manifest.updateStatsAndManifest)(nodePlugin, browserPlugin, distOutputDir);
155
+ (0, import_manifest.updateStatsAndManifest)(nodePlugin, browserPlugin, distOutputDir, import_path.default.relative(csrOutputPath, ssrOutputPath));
155
156
  });
156
157
  }
157
158
  });
158
159
  var ssrPlugin_default = moduleFederationSSRPlugin;
159
160
  // Annotate the CommonJS export names for ESM import in node:
160
161
  0 && (module.exports = {
162
+ CHAIN_MF_PLUGIN_ID,
161
163
  moduleFederationSSRPlugin,
162
164
  setEnv
163
165
  });
@@ -31,8 +31,8 @@ __export(utils_exports, {
31
31
  addMyTypes2Ignored: () => addMyTypes2Ignored,
32
32
  getIPV4: () => getIPV4,
33
33
  getMFConfig: () => getMFConfig,
34
+ isWebTarget: () => isWebTarget,
34
35
  patchBundlerConfig: () => patchBundlerConfig,
35
- patchIgnoreWarning: () => patchIgnoreWarning,
36
36
  patchMFConfig: () => patchMFConfig
37
37
  });
38
38
  module.exports = __toCommonJS(utils_exports);
@@ -173,19 +173,20 @@ const patchMFConfig = (mfConfig, isServer, remoteIpStrategy) => {
173
173
  mfConfig.dev = false;
174
174
  return mfConfig;
175
175
  };
176
- function patchIgnoreWarning(bundlerConfig) {
177
- bundlerConfig.ignoreWarnings = bundlerConfig.ignoreWarnings || [];
176
+ function patchIgnoreWarning(chain) {
177
+ const ignoreWarnings = chain.get("ignoreWarnings") || [];
178
178
  const ignoredMsgs = [
179
179
  "external script",
180
180
  "process.env.WS_NO_BUFFER_UTIL",
181
181
  `Can't resolve 'utf-8-validate`
182
182
  ];
183
- bundlerConfig.ignoreWarnings.push((warning) => {
183
+ ignoreWarnings.push((warning) => {
184
184
  if (ignoredMsgs.some((msg) => warning.message.includes(msg))) {
185
185
  return true;
186
186
  }
187
187
  return false;
188
188
  });
189
+ chain.ignoreWarnings(ignoreWarnings);
189
190
  }
190
191
  function addMyTypes2Ignored(chain, mfConfig) {
191
192
  const watchOptions = chain.get("watchOptions");
@@ -224,55 +225,43 @@ function addMyTypes2Ignored(chain, mfConfig) {
224
225
  });
225
226
  }
226
227
  function patchBundlerConfig(options) {
227
- var _modernjsConfig_server, _bundlerConfig_optimization, _bundlerConfig_optimization1, _bundlerConfig_output, _modernjsConfig_deploy;
228
- const { bundlerConfig, modernjsConfig, isServer, mfConfig, bundlerType } = options;
229
- const enableSSR = Boolean((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
230
- (_bundlerConfig_optimization = bundlerConfig.optimization) === null || _bundlerConfig_optimization === void 0 ? true : delete _bundlerConfig_optimization.runtimeChunk;
231
- patchIgnoreWarning(bundlerConfig);
232
- if (bundlerConfig.output) {
233
- var _bundlerConfig_output1, _bundlerConfig_output2;
234
- if (!((_bundlerConfig_output1 = bundlerConfig.output) === null || _bundlerConfig_output1 === void 0 ? void 0 : _bundlerConfig_output1.chunkLoadingGlobal)) {
235
- bundlerConfig.output.chunkLoadingGlobal = `chunk_${mfConfig.name}`;
236
- }
237
- if (!((_bundlerConfig_output2 = bundlerConfig.output) === null || _bundlerConfig_output2 === void 0 ? void 0 : _bundlerConfig_output2.uniqueName)) {
238
- bundlerConfig.output.uniqueName = mfConfig.name;
239
- }
228
+ var _modernjsConfig_deploy;
229
+ const { chain, modernjsConfig, isServer, mfConfig, enableSSR } = options;
230
+ chain.optimization.delete("runtimeChunk");
231
+ patchIgnoreWarning(chain);
232
+ if (!chain.output.get("chunkLoadingGlobal")) {
233
+ chain.output.chunkLoadingGlobal(`chunk_${mfConfig.name}`);
234
+ }
235
+ if (!chain.output.get("uniqueName")) {
236
+ chain.output.uniqueName(mfConfig.name);
240
237
  }
238
+ const splitChunkConfig = chain.optimization.splitChunks.entries();
241
239
  if (!isServer) {
242
- (0, import_utils.autoDeleteSplitChunkCacheGroups)(mfConfig, bundlerConfig);
240
+ (0, import_utils.autoDeleteSplitChunkCacheGroups)(mfConfig, splitChunkConfig);
243
241
  }
244
- if (!isServer && enableSSR && typeof ((_bundlerConfig_optimization1 = bundlerConfig.optimization) === null || _bundlerConfig_optimization1 === void 0 ? void 0 : _bundlerConfig_optimization1.splitChunks) === "object" && bundlerConfig.optimization.splitChunks.cacheGroups) {
245
- bundlerConfig.optimization.splitChunks.chunks = "async";
242
+ if (!isServer && enableSSR && splitChunkConfig && typeof splitChunkConfig === "object" && splitChunkConfig.cacheGroups) {
243
+ splitChunkConfig.chunks = "async";
246
244
  import_logger.default.warn(`splitChunks.chunks = async is not allowed with stream SSR mode, it will auto changed to "async"`);
247
245
  }
248
- if (isDev && ((_bundlerConfig_output = bundlerConfig.output) === null || _bundlerConfig_output === void 0 ? void 0 : _bundlerConfig_output.publicPath) === "auto") {
249
- var _modernjsConfig_dev, _modernjsConfig_server1;
250
- 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;
246
+ if (isDev && chain.output.get("publicPath") === "auto") {
247
+ var _modernjsConfig_dev, _modernjsConfig_server;
248
+ const port = ((_modernjsConfig_dev = modernjsConfig.dev) === null || _modernjsConfig_dev === void 0 ? void 0 : _modernjsConfig_dev.port) || ((_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.port) || 8080;
251
249
  const publicPath = `http://localhost:${port}/`;
252
- bundlerConfig.output.publicPath = publicPath;
250
+ chain.output.publicPath(publicPath);
253
251
  }
254
252
  if (isServer && enableSSR) {
255
- const { output } = bundlerConfig;
256
- const uniqueName = mfConfig.name || (output === null || output === void 0 ? void 0 : output.uniqueName);
257
- const chunkFileName = output === null || output === void 0 ? void 0 : output.chunkFilename;
258
- if (output && typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
253
+ const uniqueName = mfConfig.name || chain.output.get("uniqueName");
254
+ const chunkFileName = chain.output.get("chunkFilename");
255
+ if (typeof chunkFileName === "string" && uniqueName && !chunkFileName.includes(uniqueName)) {
259
256
  const suffix = `${(0, import_sdk.encodeName)(uniqueName)}-[chunkhash].js`;
260
- output.chunkFilename = chunkFileName.replace(".js", suffix);
257
+ chain.output.chunkFilename(chunkFileName.replace(".js", suffix));
261
258
  }
262
259
  }
263
260
  if (isDev && enableSSR && !isServer) {
264
- bundlerConfig.resolve.fallback = {
265
- ...bundlerConfig.resolve.fallback,
266
- crypto: false,
267
- stream: false,
268
- vm: false
269
- };
261
+ chain.resolve.fallback.set("crypto", false).set("stream", false).set("vm", false);
270
262
  }
271
263
  if (((_modernjsConfig_deploy = modernjsConfig.deploy) === null || _modernjsConfig_deploy === void 0 ? void 0 : _modernjsConfig_deploy.microFrontend) && Object.keys(mfConfig.exposes || {}).length) {
272
- if (!bundlerConfig.optimization) {
273
- bundlerConfig.optimization = {};
274
- }
275
- bundlerConfig.optimization.usedExports = false;
264
+ chain.optimization.usedExports(false);
276
265
  }
277
266
  }
278
267
  const localIpv4 = "127.0.0.1";
@@ -300,34 +289,21 @@ const getIPV4 = () => {
300
289
  };
301
290
  return ipv4Interface.address;
302
291
  };
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
292
+ const isWebTarget = (target) => {
293
+ const WEB_TARGET = "web";
294
+ if (Array.isArray(target)) {
295
+ return target.includes(WEB_TARGET);
296
+ } else if (typeof target === "string") {
297
+ return target === WEB_TARGET;
298
+ }
299
+ return false;
324
300
  };
325
301
  // Annotate the CommonJS export names for ESM import in node:
326
302
  0 && (module.exports = {
327
303
  addMyTypes2Ignored,
328
304
  getIPV4,
329
305
  getMFConfig,
306
+ isWebTarget,
330
307
  patchBundlerConfig,
331
- patchIgnoreWarning,
332
308
  patchMFConfig
333
309
  });
@@ -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
- });