Skip to content

Commit f6557ff

Browse files
authoredApr 4, 2025··
Turbopack: fix sideEffects matching for non-relative globs (#77693)
Previously, `"sideEffects": ["lib/common.js"]` never matched. Closes #66348 Closes PACK-4241
1 parent a14d013 commit f6557ff

File tree

6 files changed

+25
-3
lines changed

6 files changed

+25
-3
lines changed
 

‎turbopack/crates/turbopack-ecmascript/src/chunk/placeable.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ async fn side_effects_from_package_json(
5050
.filter_map(|side_effect| {
5151
if let Some(side_effect) = side_effect.as_str() {
5252
if side_effect.contains('/') {
53-
Some(Glob::new(side_effect.into()))
53+
Some(Glob::new(
54+
side_effect.strip_prefix("./").unwrap_or(side_effect).into(),
55+
))
5456
} else {
5557
Some(Glob::new(format!("**/{side_effect}").into()))
5658
}
@@ -179,7 +181,8 @@ pub async fn is_marked_as_side_effect_free(
179181
.await?
180182
.get_relative_path_to(&*path.await?)
181183
{
182-
return Ok(Vc::cell(!glob.await?.execute(&rel_path)));
184+
let rel_path = rel_path.strip_prefix("./").unwrap_or(&rel_path);
185+
return Ok(Vc::cell(!glob.await?.execute(rel_path)));
183186
}
184187
}
185188
}

‎turbopack/crates/turbopack-tests/tests/execution/turbopack/side-effects-optimization/basic/input/index.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,12 @@ import { effects } from "package-partial/effect";
102102
it("should handle globs in sideEffects field", () => {
103103
expect(a9).toBe("a");
104104
expect(b9).toBe("b");
105-
expect(effects).toEqual(["file.side.js", "dir/file.js"]);
105+
expect(effects).toEqual([
106+
"file.side.js",
107+
"sub/file.side.js",
108+
"sub/bare.js",
109+
"dir/file.js"
110+
]);
106111
});
107112

108113
it("should generate a correct facade from async modules", async () => {

‎turbopack/crates/turbopack-tests/tests/execution/turbopack/side-effects-optimization/basic/input/node_modules/package-partial/index.js

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎turbopack/crates/turbopack-tests/tests/execution/turbopack/side-effects-optimization/basic/input/node_modules/package-partial/package.json

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎turbopack/crates/turbopack-tests/tests/execution/turbopack/side-effects-optimization/basic/input/node_modules/package-partial/sub/bare.js

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎turbopack/crates/turbopack-tests/tests/execution/turbopack/side-effects-optimization/basic/input/node_modules/package-partial/sub/file.side.js

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.