Skip to content

Commit 551eaea

Browse files
authored
fix: hmr doesn't work when modifying the code of jsx in sfc (#4563)
1 parent af437aa commit 551eaea

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

packages/plugin-vue-jsx/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ function vueJsxPlugin(options = {}) {
207207
) + `\nexport default __default__`
208208
}
209209

210-
if (needHmr && !ssr) {
210+
if (needHmr && !ssr && !/\?vue&type=script/.test(id)) {
211211
let code = result.code
212212
let callbackCode = ``
213213
for (const { local, exported, id } of hotComponents) {

packages/plugin-vue/src/handleHotUpdate.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,14 @@ export async function handleHotUpdate({
4646
!isEqualBlock(descriptor.script, prevDescriptor.script) ||
4747
!isEqualBlock(descriptor.scriptSetup, prevDescriptor.scriptSetup)
4848
) {
49-
affectedModules.add(mainModule)
49+
let scriptModule: ModuleNode | undefined
50+
if (descriptor.script?.lang && !descriptor.script.src) {
51+
const scriptModuleRE = new RegExp(
52+
`type=script.*&lang\.${descriptor.script.lang}$`
53+
)
54+
scriptModule = modules.find((m) => scriptModuleRE.test(m.url))
55+
}
56+
affectedModules.add(scriptModule || mainModule)
5057
}
5158

5259
if (!isEqualBlock(descriptor.template, prevDescriptor.template)) {

0 commit comments

Comments
 (0)