]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(hmr): prevent __VUE_HMR_RUNTIME__ from being overwritten by vue runtime in 3rd...
authoredison <daiwei521@126.com>
Tue, 2 Sep 2025 09:10:30 +0000 (17:10 +0800)
committerGitHub <noreply@github.com>
Tue, 2 Sep 2025 09:10:30 +0000 (17:10 +0800)
close vitejs/vite-plugin-vue#644

packages/runtime-core/src/hmr.ts

index 4191a34f82f32e66ab08e379534a18e2cb4fff57..8f443de0ccda268d8e56212a3bf1a92dd483ca08 100644 (file)
@@ -31,11 +31,17 @@ export interface HMRRuntime {
 // Note: for a component to be eligible for HMR it also needs the __hmrId option
 // to be set so that its instances can be registered / removed.
 if (__DEV__) {
-  getGlobalThis().__VUE_HMR_RUNTIME__ = {
-    createRecord: tryWrap(createRecord),
-    rerender: tryWrap(rerender),
-    reload: tryWrap(reload),
-  } as HMRRuntime
+  const g = getGlobalThis()
+  // vite-plugin-vue/issues/644, #13202
+  // custom-element libraries bundle Vue to simplify usage outside Vue projects but
+  // it overwrite __VUE_HMR_RUNTIME__, causing HMR to break.
+  if (!g.__VUE_HMR_RUNTIME__) {
+    g.__VUE_HMR_RUNTIME__ = {
+      createRecord: tryWrap(createRecord),
+      rerender: tryWrap(rerender),
+      reload: tryWrap(reload),
+    } as HMRRuntime
+  }
 }
 
 const map: Map<