Skip to content

Commit fcc1674

Browse files
authored
fix: should not generate SRI for empty mf chunks (#11029)
1 parent b6ffa7d commit fcc1674

File tree

12 files changed

+74
-1
lines changed

12 files changed

+74
-1
lines changed

Cargo.lock

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

crates/rspack_plugin_mf/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ pub use container::{
1111
module_federation_runtime_plugin::ModuleFederationRuntimePlugin,
1212
};
1313
pub use sharing::{
14+
consume_shared_module::ConsumeSharedModule,
1415
consume_shared_plugin::{
1516
ConsumeOptions, ConsumeSharedPlugin, ConsumeSharedPluginOptions, ConsumeVersion,
1617
},
18+
provide_shared_module::ProvideSharedModule,
1719
provide_shared_plugin::{ProvideOptions, ProvideSharedPlugin, ProvideVersion},
1820
share_runtime_module::{
1921
CodeGenerationDataShareInit, DataInitStage, ShareInitData, ShareRuntimeModule,

crates/rspack_plugin_sri/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ rspack_hash = { workspace = true }
2626
rspack_hook = { workspace = true }
2727
rspack_paths = { workspace = true }
2828
rspack_plugin_html = { workspace = true }
29+
rspack_plugin_mf = { workspace = true }
2930
rspack_plugin_real_content_hash = { workspace = true }
3031
rspack_plugin_runtime = { workspace = true }
3132
rspack_util = { workspace = true }

crates/rspack_plugin_sri/src/runtime.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use rspack_core::{
66
};
77
use rspack_error::{error, Result};
88
use rspack_hook::plugin_hook;
9+
use rspack_plugin_mf::{ConsumeSharedModule, ProvideSharedModule};
910
use rspack_plugin_runtime::{
1011
CreateScriptData, LinkPreloadData, RuntimePluginCreateScript, RuntimePluginLinkPreload,
1112
};
@@ -72,12 +73,23 @@ impl RuntimeModule for SRIHashVariableRuntimeModule {
7273
Some((id, rendered_hash))
7374
})
7475
.collect::<HashMap<_, _>>();
76+
77+
let module_graph = compilation.get_module_graph();
7578
let all_chunks = find_chunks(&self.chunk, compilation)
7679
.into_iter()
7780
.filter_map(|c| {
7881
let chunk = compilation.chunk_by_ukey.get(&c)?;
7982
let id = chunk.id(&compilation.chunk_ids_artifact)?;
80-
if include_chunks.contains_key(id) {
83+
let has_modules = compilation
84+
.chunk_graph
85+
.get_chunk_modules(&c, &module_graph)
86+
.iter()
87+
.any(|m| {
88+
m.downcast_ref::<ConsumeSharedModule>().is_none()
89+
&& m.downcast_ref::<ProvideSharedModule>().is_none()
90+
});
91+
92+
if has_modules && include_chunks.contains_key(id) {
8193
Some(id)
8294
} else {
8395
None
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import('./render');
2+
3+
it("should compile", async () => {
4+
})
5+

packages/rspack-test-tools/tests/configCases/sri/mf/node_modules/react-dom/index.js

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

packages/rspack-test-tools/tests/configCases/sri/mf/node_modules/react-dom/package.json

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

packages/rspack-test-tools/tests/configCases/sri/mf/node_modules/react/index.js

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

packages/rspack-test-tools/tests/configCases/sri/mf/node_modules/react/package.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import React from 'react';
2+
import ReactDOM from 'react-dom';
3+
4+
export { React, ReactDOM };

0 commit comments

Comments
 (0)