Преглед на файлове

fix(hmr): prevent __VUE_HMR_RUNTIME__ from being overwritten by vue runtime in 3rd-party libraries (#13817)

close vitejs/vite-plugin-vue#644
edison преди 7 месеца
родител
ревизия
1392734ae5
променени са 1 файла, в които са добавени 11 реда и са изтрити 5 реда
  1. 11 5
      packages/runtime-core/src/hmr.ts

+ 11 - 5
packages/runtime-core/src/hmr.ts

@@ -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<