@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.
- package/dist/cjs/cli/configPlugin.js +18 -42
- package/dist/cjs/cli/index.js +25 -30
- package/dist/cjs/cli/manifest.js +9 -10
- package/dist/cjs/cli/ssrPlugin.js +42 -40
- package/dist/cjs/cli/utils.js +37 -61
- package/dist/cjs/cli/utils.spec.js +0 -60
- package/dist/esm/cli/configPlugin.js +18 -45
- package/dist/esm/cli/index.js +28 -35
- package/dist/esm/cli/manifest.js +9 -10
- package/dist/esm/cli/ssrPlugin.js +42 -44
- package/dist/esm/cli/utils.js +36 -59
- package/dist/esm/cli/utils.spec.js +1 -78
- package/dist/esm-node/cli/configPlugin.js +18 -41
- package/dist/esm-node/cli/index.js +25 -30
- package/dist/esm-node/cli/manifest.js +9 -10
- package/dist/esm-node/cli/ssrPlugin.js +41 -40
- package/dist/esm-node/cli/utils.js +36 -60
- package/dist/esm-node/cli/utils.spec.js +1 -61
- package/dist/types/cli/configPlugin.d.ts +1 -11
- package/dist/types/cli/manifest.d.ts +1 -1
- package/dist/types/cli/ssrPlugin.d.ts +1 -0
- package/dist/types/cli/utils.d.ts +6 -6
- package/dist/types/types/index.d.ts +1 -1
- 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: [
|
|
@@ -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
|
|
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
|
});
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -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.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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: [
|
package/dist/cjs/cli/manifest.js
CHANGED
|
@@ -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
|
-
|
|
37
|
-
function mergeStats(browserStats, nodeStats) {
|
|
36
|
+
function mergeStats(browserStats, nodeStats, ssrDir) {
|
|
38
37
|
const ssrRemoteEntry = nodeStats.metaData.remoteEntry;
|
|
39
|
-
ssrRemoteEntry.path =
|
|
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 =
|
|
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
|
-
|
|
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
|
});
|
package/dist/cjs/cli/utils.js
CHANGED
|
@@ -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(
|
|
177
|
-
|
|
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
|
-
|
|
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
|
|
228
|
-
const {
|
|
229
|
-
|
|
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
|
-
}
|
|
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,
|
|
240
|
+
(0, import_utils.autoDeleteSplitChunkCacheGroups)(mfConfig, splitChunkConfig);
|
|
243
241
|
}
|
|
244
|
-
if (!isServer && enableSSR &&
|
|
245
|
-
|
|
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 &&
|
|
249
|
-
var _modernjsConfig_dev,
|
|
250
|
-
const port = ((_modernjsConfig_dev = modernjsConfig.dev) === null || _modernjsConfig_dev === void 0 ? void 0 : _modernjsConfig_dev.port) || ((
|
|
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
|
-
|
|
250
|
+
chain.output.publicPath(publicPath);
|
|
253
251
|
}
|
|
254
252
|
if (isServer && enableSSR) {
|
|
255
|
-
const
|
|
256
|
-
const
|
|
257
|
-
|
|
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
|
|
257
|
+
chain.output.chunkFilename(chunkFileName.replace(".js", suffix));
|
|
261
258
|
}
|
|
262
259
|
}
|
|
263
260
|
if (isDev && enableSSR && !isServer) {
|
|
264
|
-
|
|
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
|
-
|
|
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
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
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
|
-
});
|