From 7b8bf6eea6773397e7e3703e68882ccf71cb00df Mon Sep 17 00:00:00 2001 From: Jiwon Choi Date: Sun, 15 Dec 2024 03:11:48 +0900 Subject: [PATCH] fix(turbo): sassOptions `silenceDeprecations` was not overwritten with user options (#73937) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Why? The user's `silenceDeprecations` option was not overwritten in turbopack, only the `legacy-js-api` was passed. Thanks to @mzronek for reporting at https://github.com/vercel/next.js/issues/71638#issuecomment-2539967913! Co-authored-by: Donny/강동윤 --- .../next-core/src/next_shared/webpack_rules/sass.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/crates/next-core/src/next_shared/webpack_rules/sass.rs b/crates/next-core/src/next_shared/webpack_rules/sass.rs index 296142d0f49ba..039030d1b6391 100644 --- a/crates/next-core/src/next_shared/webpack_rules/sass.rs +++ b/crates/next-core/src/next_shared/webpack_rules/sass.rs @@ -16,10 +16,13 @@ pub async fn maybe_add_sass_loader( bail!("sass_options must be an object"); }; // TODO: Remove this once we upgrade to sass-loader 16 - sass_options.insert( - "silenceDeprecations".into(), - serde_json::json!(["legacy-js-api"]), - ); + let silence_deprecations = if let Some(v) = sass_options.get("silenceDeprecations") { + v.clone() + } else { + serde_json::json!(["legacy-js-api"]) + }; + + sass_options.insert("silenceDeprecations".into(), silence_deprecations); let mut rules = if let Some(webpack_rules) = webpack_rules { webpack_rules.await?.clone_value() } else {