diff --git a/packages/plugin-vue-jsx/index.js b/packages/plugin-vue-jsx/index.js index 8b739a4f..86b01170 100644 --- a/packages/plugin-vue-jsx/index.js +++ b/packages/plugin-vue-jsx/index.js @@ -207,7 +207,7 @@ function vueJsxPlugin(options = {}) { ) + `\nexport default __default__` } - if (needHmr && !ssr) { + if (needHmr && !ssr && !/\?vue&type=script/.test(id)) { let code = result.code let callbackCode = `` for (const { local, exported, id } of hotComponents) { diff --git a/packages/plugin-vue/src/handleHotUpdate.ts b/packages/plugin-vue/src/handleHotUpdate.ts index bed495a2..94d1fb4e 100644 --- a/packages/plugin-vue/src/handleHotUpdate.ts +++ b/packages/plugin-vue/src/handleHotUpdate.ts @@ -46,7 +46,14 @@ export async function handleHotUpdate({ !isEqualBlock(descriptor.script, prevDescriptor.script) || !isEqualBlock(descriptor.scriptSetup, prevDescriptor.scriptSetup) ) { - affectedModules.add(mainModule) + let scriptModule: ModuleNode | undefined + if (descriptor.script?.lang && !descriptor.script.src) { + const scriptModuleRE = new RegExp( + `type=script.*&lang\.${descriptor.script.lang}$` + ) + scriptModule = modules.find((m) => scriptModuleRE.test(m.url)) + } + affectedModules.add(scriptModule || mainModule) } if (!isEqualBlock(descriptor.template, prevDescriptor.template)) {