diff --git a/crates/rspack_plugin_esm_library/src/plugin.rs b/crates/rspack_plugin_esm_library/src/plugin.rs index 793d69be0008..4c0f03bb3b3b 100644 --- a/crates/rspack_plugin_esm_library/src/plugin.rs +++ b/crates/rspack_plugin_esm_library/src/plugin.rs @@ -300,133 +300,6 @@ async fn finish_modules( _side_effects_state_artifact: &mut SideEffectsStateArtifact, ) -> Result<()> { let module_graph = compilation.get_module_graph(); - let mut modules_map = IdentifierIndexMap::default(); - let mut modules = module_graph.modules().collect::>(); - modules.sort_by_key(|(m1, _)| *m1); - let logger = compilation.get_logger("rspack.EsmLibraryPlugin"); - - for (idx, (module_identifier, module)) in modules.into_iter().enumerate() { - // make sure all exports are provided - let mut should_scope_hoisting = true; - - if let Some(reason) = module.get_concatenation_bailout_reason( - module_graph, - &compilation.build_chunk_graph_artifact.chunk_graph, - ) { - logger.debug(format!( - "module {module_identifier} has bailout reason: {reason}", - )); - should_scope_hoisting = false; - } - // TODO: support config to disable scope hoisting for non strict module - // else if !module.build_info().strict { - // logger.debug(format!("module {module_identifier} is not strict module")); - // should_scope_hoisting = false; - // } - else if module_graph - .get_incoming_connections(module_identifier) - .map(|conn| module_graph.dependency_by_id(&conn.dependency_id)) - .any(|dep| { - !is_esm_dep_like(dep) - && !matches!( - dep.dependency_type(), - DependencyType::Entry | DependencyType::DynamicImport - ) - }) - { - logger.debug(format!( - "module {module_identifier} is referenced by non esm dependency" - )); - should_scope_hoisting = false; - } - - // if we reach here, check exports info - if should_scope_hoisting { - let exports_info = exports_info_artifact.get_exports_info_data(module_identifier); - - let relevant_exports = exports_info.get_relevant_exports(None); - let unknown_exports = relevant_exports - .iter() - .filter(|export_info| { - export_info.is_reexport() - && !matches!( - get_target( - export_info, - module_graph, - exports_info_artifact, - &|_| true, - &mut Default::default() - ), - Some(GetTargetResult::Target(_)) - ) - }) - .copied() - .collect::>(); - - if !unknown_exports.is_empty() { - logger.debug(format!( - "module {module_identifier} has unknown reexport: {:?}", - unknown_exports.iter().map(|e| e.name()).collect::>() - )); - should_scope_hoisting = false; - } - } - - if should_scope_hoisting { - modules_map.insert( - *module_identifier, - ModuleInfo::Concatenated(Box::new(ConcatenatedModuleInfo { - index: idx, - module: *module_identifier, - ..Default::default() - })), - ); - } else { - modules_map.insert( - *module_identifier, - ModuleInfo::External(ExternalModuleInfo::new(idx, *module_identifier)), - ); - } - } - - // we should mark all wrapped modules' children as wrapped - let mut visited = IdentifierSet::default(); - let mut stack = modules_map - .iter() - .filter(|(_, info)| matches!(info, ModuleInfo::External(_))) - .map(|(id, _)| *id) - .collect::>(); - - let module_graph = compilation.get_module_graph(); - while let Some(m) = stack.pop() { - if !visited.insert(m) { - continue; - } - - for dep in module_graph.get_outgoing_deps_in_order(&m) { - let Some(dep_module) = module_graph.module_identifier_by_dependency_id(dep) else { - continue; - }; - - if let Some(info) = modules_map.get_mut(dep_module) - && let ModuleInfo::Concatenated(concate_info) = info - { - *info = ModuleInfo::External(ExternalModuleInfo::new( - concate_info.index, - concate_info.module, - )); - stack.push(*dep_module); - } - } - } - - // only used for scope - // we mutably modify data in `self.concatenated_modules_map` - let mut map = self.concatenated_modules_map_for_codegen.borrow_mut(); - *map = Arc::new(modules_map.clone()); - drop(map); - - *self.concatenated_modules_map.write().await = modules_map; // mark all entry exports as used let mut entry_modules = IdentifierSet::default(); for entry_data in compilation.entries.values() { @@ -970,11 +843,6 @@ impl Plugin for EsmLibraryPlugin { .optimize_chunks .tap(optimize_runtime_chunk_hook::new(self)); - ctx - .compilation_hooks - .optimize_dependencies - .tap(optimize_dependencies::new(self)); - ctx .compilation_hooks .optimize_chunk_modules