Skip to content

Commit 54c4e0c

Browse files
committed
feat: support lazy
1 parent 69c9c11 commit 54c4e0c

File tree

5 files changed

+59
-43
lines changed

5 files changed

+59
-43
lines changed

crates/rspack_plugin_mf/src/container/container_entry_module.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,6 @@ impl ExposeModuleMap {
327327
} else {
328328
let has_wasm_async = modules_iter.clone().any(|(_, module, _, _)| {
329329
if let Some(module) = module {
330-
let module_graph = compilation.get_module_graph();
331330
let module_type = module.module_type();
332331
matches!(module_type, rspack_core::ModuleType::WasmAsync)
333332
} else {

crates/rspack_plugin_mf/src/sharing/consume_shared_runtime_module.rs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,35 @@ impl RuntimeModule for ConsumeSharedRuntimeModule {
104104
add_module(mid, chunk, &mut initial_consumes);
105105
}
106106
}
107-
if module_id_to_consume_data_mapping.is_empty() {
108-
return Ok("".to_string());
109-
}
110-
let module_id_to_consume_data_mapping = module_id_to_consume_data_mapping
111-
.into_iter()
112-
.map(|(k, v)| format!("{}: {}", json_stringify(&k), v))
113-
.collect::<Vec<_>>()
114-
.join(", ");
107+
let module_id_to_consume_data_mapping = if module_id_to_consume_data_mapping.is_empty() {
108+
"{}".to_string()
109+
} else {
110+
format!(
111+
"{{{}}}",
112+
module_id_to_consume_data_mapping
113+
.into_iter()
114+
.map(|(k, v)| format!("{}: {}", json_stringify(&k), v))
115+
.collect::<Vec<_>>()
116+
.join(", ")
117+
)
118+
};
119+
let chunk_mapping = if chunk_to_module_mapping.is_empty() {
120+
"{}".to_string()
121+
} else {
122+
json_stringify(&chunk_to_module_mapping)
123+
};
124+
let initial_consumes_json = if initial_consumes.is_empty() {
125+
"[]".to_string()
126+
} else {
127+
json_stringify(&initial_consumes)
128+
};
115129
let mut source = format!(
116130
r#"
117-
__webpack_require__.consumesLoadingData = {{ chunkMapping: {chunk_mapping}, moduleIdToConsumeDataMapping: {{ {module_to_consume_data_mapping} }}, initialConsumes: {initial_consumes} }};
131+
__webpack_require__.consumesLoadingData = {{ chunkMapping: {chunk_mapping}, moduleIdToConsumeDataMapping: {module_to_consume_data_mapping}, initialConsumes: {initial_consumes_json} }};
118132
"#,
119-
chunk_mapping = json_stringify(&chunk_to_module_mapping),
133+
chunk_mapping = chunk_mapping,
120134
module_to_consume_data_mapping = module_id_to_consume_data_mapping,
121-
initial_consumes = json_stringify(&initial_consumes),
135+
initial_consumes_json = initial_consumes_json,
122136
);
123137
if self.enhanced {
124138
if ChunkGraph::get_chunk_runtime_requirements(compilation, &chunk_ukey)

packages/rspack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"zod-validation-error": "3.5.3"
6868
},
6969
"dependencies": {
70-
"@module-federation/runtime-tools": "0.0.0-fix-lazy-comile-20250929064217",
70+
"@module-federation/runtime-tools": "0.0.0-fix-lazy-comile-20250930092757",
7171
"@rspack/binding": "workspace:*",
7272
"@rspack/lite-tapable": "1.0.1"
7373
},

pnpm-lock.yaml

Lines changed: 29 additions & 29 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/e2e/cases/lazy-compilation/module-federation/src/bootstrap.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import ReactDOM from "react-dom/client";
33

44
ReactDOM.createRoot(document.getElementById("root")).render(
55
<React.StrictMode>
6-
<button type="button" onClick={() => import("./remote-entry.js")}>
6+
<button type="button" onClick={() => {
7+
import("./remote-entry.js");
8+
import("./share-entry.js");
9+
}}>
710
Click me
811
</button>
912
</React.StrictMode>

0 commit comments

Comments
 (0)