From fc52ff8c08f891238009027a8a567eac02fb458b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20G=C5=82owala?= Date: Mon, 10 Feb 2025 18:10:10 +0100 Subject: [PATCH] fix(nuxt): delete existing properties in app config HMR (#30918) --- packages/nuxt/src/app/config.ts | 7 +++++++ packages/nuxt/src/core/templates.ts | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/app/config.ts b/packages/nuxt/src/app/config.ts index 476f828abf..4a677359cd 100644 --- a/packages/nuxt/src/app/config.ts +++ b/packages/nuxt/src/app/config.ts @@ -54,6 +54,13 @@ export function useAppConfig (): AppConfig { return nuxtApp._appConfig } +export function _replaceAppConfig (newConfig: AppConfig) { + const appConfig = useAppConfig() + + deepAssign(appConfig, newConfig) + deepDelete(appConfig, newConfig) +} + /** * Deep assign the current appConfig with the new one. * diff --git a/packages/nuxt/src/core/templates.ts b/packages/nuxt/src/core/templates.ts index d051115569..e6a10a2bbf 100644 --- a/packages/nuxt/src/core/templates.ts +++ b/packages/nuxt/src/core/templates.ts @@ -437,12 +437,12 @@ import { defuFn } from 'defu' const inlineConfig = ${JSON.stringify(nuxt.options.appConfig, null, 2)} /** client **/ -import { updateAppConfig } from '#app/config' +import { _replaceAppConfig } from '#app/config' // Vite - webpack is handled directly in #app/config if (import.meta.dev && !import.meta.nitro && import.meta.hot) { import.meta.hot.accept((newModule) => { - updateAppConfig(newModule.default) + _replaceAppConfig(newModule.default) }) } /** client-end **/