diff --git a/packages/runtime-core/src/hmr.ts b/packages/runtime-core/src/hmr.ts index 4191a34f8..8f443de0c 100644 --- a/packages/runtime-core/src/hmr.ts +++ b/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<