From 4c42ffcd0733ad9e8c3cd85a94c8b44001576c4a Mon Sep 17 00:00:00 2001 From: pshu Date: Mon, 23 Dec 2024 15:10:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=F0=9F=8E=A8=20no=20need=20to?= =?UTF-8?q?=20resolve=20empty=20url=20in=20css?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/mako/src/resolve.rs | 2 +- crates/mako/src/visitors/css_assets.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/mako/src/resolve.rs b/crates/mako/src/resolve.rs index f283eba13..71ece577c 100644 --- a/crates/mako/src/resolve.rs +++ b/crates/mako/src/resolve.rs @@ -280,7 +280,7 @@ fn do_resolve( } _ => { eprintln!( - "failed to resolve {} from {} with resolver err: {:?}", + "failed to resolve `{}` from `{}` with resolver err: {:?}", source, path.to_string_lossy(), oxc_resolve_err diff --git a/crates/mako/src/visitors/css_assets.rs b/crates/mako/src/visitors/css_assets.rs index 2a8b7155a..c5523ea0c 100644 --- a/crates/mako/src/visitors/css_assets.rs +++ b/crates/mako/src/visitors/css_assets.rs @@ -32,6 +32,10 @@ impl VisitMut for CSSAssets { return; } let url = remove_first_tilde(url); + + if url.is_empty() { + return; + } let dep = Dependency { source: url, resolve_as: None, From a20eea63fb3a137b0e40564de80e0c2158f0930a Mon Sep 17 00:00:00 2001 From: pshu Date: Mon, 23 Dec 2024 15:22:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=F0=9F=8E=A8=20add=20test=20cas?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/mako/src/visitors/css_assets.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/mako/src/visitors/css_assets.rs b/crates/mako/src/visitors/css_assets.rs index c5523ea0c..7066e4f04 100644 --- a/crates/mako/src/visitors/css_assets.rs +++ b/crates/mako/src/visitors/css_assets.rs @@ -28,14 +28,12 @@ impl VisitMut for CSSAssets { box UrlValue::Raw(s) => s.value.to_string(), }; - if is_remote_or_data_or_hash(&url) { + if is_remote_or_data_or_hash(&url) || url.is_empty() { return; } + let url = remove_first_tilde(url); - if url.is_empty() { - return; - } let dep = Dependency { source: url, resolve_as: None, @@ -114,6 +112,14 @@ mod tests { ); } + #[test] + fn test_empty_url() { + assert_eq!( + run(r#".foo { background: url("") }"#), + r#".foo{background:url("")}"# + ); + } + #[test] fn test_big_image() { assert!(run(r#".foo { background: url(big.jpg) }"#).contains(".foo{background:url(big."));