Skip to content

Commit 647411a

Browse files
committed
feat: rsdoctor plugin add json size
1 parent 8f9a085 commit 647411a

File tree

2 files changed

+41
-153
lines changed

2 files changed

+41
-153
lines changed

crates/rspack_plugin_json/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ impl ParserAndGenerator for JsonParserAndGenerator {
4242
}
4343

4444
fn size(&self, module: &dyn Module, _source_type: Option<&SourceType>) -> f64 {
45-
// dbg!(&module.build_info().json_data.as_ref());
4645
module
4746
.build_info()
4847
.json_data

crates/rspack_plugin_rsdoctor/src/plugin.rs

Lines changed: 41 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -451,152 +451,34 @@ async fn after_code_generation(
451451
let hooks = RsdoctorPlugin::get_compilation_hooks(compilation.id());
452452
let module_graph = compilation.get_module_graph();
453453
let modules = module_graph.modules();
454-
455-
// 1. Collect Module Graph (Moved from optimize_chunk_modules)
456-
if self.has_module_graph_feature(RsdoctorPluginModuleGraphFeature::ModuleGraph) {
457-
let mut rsd_modules = HashMap::default();
458-
let mut rsd_dependencies = HashMap::default();
459-
460-
let chunk_graph = &compilation.chunk_graph;
461-
let chunk_by_ukey = &compilation.chunk_by_ukey;
462-
463-
// 1.1 collect modules
464-
rsd_modules.extend(collect_modules(
465-
&modules,
466-
&module_graph,
467-
chunk_graph,
468-
&compilation.options.context,
469-
));
470-
471-
{
472-
let mut module_ukey_map = MODULE_UKEY_MAP
473-
.get_mut(&compilation.id())
474-
.expect("should have module ukey map");
475-
for (module_id, module) in rsd_modules.iter() {
476-
module_ukey_map.insert(*module_id, module.ukey);
477-
}
478-
}
479-
480-
let module_ukey_map = MODULE_UKEY_MAP
454+
let rsd_module_original_sources = collect_module_original_sources(
455+
&modules,
456+
&MODULE_UKEY_MAP
481457
.get(&compilation.id())
482-
.expect("should have module ukey map");
483-
// 1.2 collect concatenate children
484-
let (child_map, parent_map) = collect_concatenated_modules(&modules);
485-
for (module_id, children) in child_map {
486-
if let Some(rsd_module) = rsd_modules.get_mut(&module_id) {
487-
rsd_module.modules.extend(
488-
children
489-
.iter()
490-
.filter_map(|i| module_ukey_map.get(i).copied())
491-
.collect::<HashSet<_>>(),
492-
);
493-
}
494-
}
495-
496-
// 1.3 collect concatenate parents
497-
for (module_id, parents) in parent_map {
498-
if let Some(rsd_module) = rsd_modules.get_mut(&module_id) {
499-
rsd_module.belong_modules.extend(
500-
parents
501-
.iter()
502-
.filter_map(|i| module_ukey_map.get(i).copied())
503-
.collect::<HashSet<_>>(),
504-
);
505-
}
506-
}
507-
508-
// 1.4 collect module dependencies
509-
let dependency_infos = collect_module_dependencies(&modules, &module_ukey_map, &module_graph);
510-
for (origin_module_id, dependencies) in dependency_infos {
511-
for (dep_module_id, (dep_id, dependency)) in dependencies {
512-
if let Some(rsd_module) = rsd_modules.get_mut(&dep_module_id) {
513-
rsd_module.imported.insert(dependency.module);
514-
}
515-
if let Some(rsd_module) = rsd_modules.get_mut(&origin_module_id) {
516-
rsd_module.dependencies.insert(dependency.ukey);
517-
}
518-
rsd_dependencies.insert(dep_id, dependency);
519-
}
520-
}
521-
522-
// 1.5 Rsdoctor module add issuer_path
523-
for (module_id, _) in modules.iter() {
524-
let mut issuer_path = Vec::new();
525-
let mut current_issuer = module_graph.get_issuer(module_id);
526-
527-
while let Some(i) = current_issuer {
528-
if let Some(rsd_module) = rsd_modules.get_mut(&i.identifier()) {
529-
let module_ukey = rsd_module.ukey;
530-
531-
issuer_path.push(RsdoctorStatsModuleIssuer {
532-
ukey: Some(module_ukey),
533-
});
534-
}
535-
536-
current_issuer = module_graph.get_issuer(&i.identifier());
537-
}
538-
539-
if let Some(rsd_module) = rsd_modules.get_mut(module_id) {
540-
rsd_module.issuer_path = Some(issuer_path);
541-
let bailout_reason = module_graph.get_optimization_bailout(module_id);
542-
rsd_module.bailout_reason = bailout_reason.iter().map(|s| s.to_string()).collect();
543-
}
544-
}
458+
.expect("should have module ukey map"),
459+
module_graph,
460+
compilation,
461+
);
545462

546-
// 1.6 collect chunk modules
547-
let chunk_modules =
548-
collect_chunk_modules(chunk_by_ukey, &module_ukey_map, chunk_graph, &module_graph);
549-
550-
let module_graph_hook = hooks.clone();
551-
tokio::spawn(async move {
552-
match module_graph_hook
553-
.borrow()
554-
.module_graph
555-
.call(&mut RsdoctorModuleGraph {
556-
modules: rsd_modules.into_values().collect::<Vec<_>>(),
557-
dependencies: rsd_dependencies.into_values().collect::<Vec<_>>(),
558-
chunk_modules,
559-
})
560-
.await
561-
{
562-
Ok(_) => {}
563-
Err(e) => panic!("rsdoctor send module graph failed: {e}"),
564-
};
565-
});
566-
}
463+
let json_module_sizes = JSON_MODULE_SIZE_MAP
464+
.get(&compilation.id())
465+
.map(|map| map.clone())
466+
.unwrap_or_default();
567467

568-
// 2. Collect Module Sources
569-
if self.has_module_graph_feature(RsdoctorPluginModuleGraphFeature::ModuleSources) {
570-
let rsd_module_original_sources = collect_module_original_sources(
571-
&modules,
572-
&MODULE_UKEY_MAP
573-
.get(&compilation.id())
574-
.expect("should have module ukey map"),
575-
&module_graph,
576-
compilation,
577-
);
578-
579-
let json_module_sizes = JSON_MODULE_SIZE_MAP
580-
.get(&compilation.id())
581-
.map(|map| map.clone())
582-
.unwrap_or_default();
583-
584-
let module_sources_hook = hooks.clone();
585-
tokio::spawn(async move {
586-
match module_sources_hook
587-
.borrow()
588-
.module_sources
589-
.call(&mut RsdoctorModuleSourcesPatch {
590-
module_original_sources: rsd_module_original_sources,
591-
json_module_sizes,
592-
})
593-
.await
594-
{
595-
Ok(_) => {}
596-
Err(e) => panic!("rsdoctor send module sources failed: {e}"),
597-
};
598-
});
599-
}
468+
tokio::spawn(async move {
469+
match hooks
470+
.borrow()
471+
.module_sources
472+
.call(&mut RsdoctorModuleSourcesPatch {
473+
module_original_sources: rsd_module_original_sources,
474+
json_module_sizes,
475+
})
476+
.await
477+
{
478+
Ok(_) => {}
479+
Err(e) => panic!("rsdoctor send module sources failed: {e}"),
480+
};
481+
});
600482

601483
Ok(())
602484
}
@@ -612,17 +494,24 @@ async fn after_process_assets(
612494
}
613495

614496
let hooks = RsdoctorPlugin::get_compilation_hooks(compilation.id());
615-
497+
let assets = compilation.assets();
616498
let chunk_by_ukey = &compilation.chunk_by_ukey;
617499
let chunk_group_by_ukey = &compilation.chunk_group_by_ukey;
618-
let rsd_assets = collect_assets(compilation.assets(), chunk_by_ukey);
619-
let rsd_chunk_assets = collect_chunk_assets(chunk_by_ukey, &rsd_assets);
620-
let rsd_entrypoint_assets = collect_entrypoint_assets(
500+
501+
// 1. collect assets
502+
let rsd_assets = collect_assets(assets, chunk_by_ukey);
503+
504+
// 2. collect chunk assets
505+
let chunk_assets = collect_chunk_assets(chunk_by_ukey, &rsd_assets);
506+
507+
// 3. collect entrypoint assets
508+
let entrypoint_ukey_map = ENTRYPOINT_UKEY_MAP
509+
.get(&compilation.id())
510+
.expect("should have entrypoint ukey map");
511+
let entrypoint_assets = collect_entrypoint_assets(
621512
&compilation.entrypoints,
622513
&rsd_assets,
623-
&ENTRYPOINT_UKEY_MAP
624-
.get(&compilation.id())
625-
.expect("should have entrypoint ukey map"),
514+
&entrypoint_ukey_map,
626515
chunk_group_by_ukey,
627516
chunk_by_ukey,
628517
);
@@ -633,8 +522,8 @@ async fn after_process_assets(
633522
.assets
634523
.call(&mut RsdoctorAssetPatch {
635524
assets: rsd_assets.into_values().collect::<Vec<_>>(),
636-
chunk_assets: rsd_chunk_assets,
637-
entrypoint_assets: rsd_entrypoint_assets,
525+
chunk_assets,
526+
entrypoint_assets,
638527
})
639528
.await
640529
{

0 commit comments

Comments
 (0)