From 9c749825eee4e548886d9c84e68deaa4e7c0aa9f Mon Sep 17 00:00:00 2001 From: tycho Date: Sat, 8 Mar 2025 23:34:31 +0800 Subject: [PATCH 1/2] fix(plugin-vue): ensure HMR updates styles when SFC is treated as a type dependency --- packages/plugin-vue/src/index.ts | 6 ++++-- playground/vue/ExportTypeProps1.vue | 19 +++++++++++++++++++ playground/vue/ExportTypeProps2.vue | 8 ++++++++ playground/vue/Main.vue | 4 ++++ playground/vue/__tests__/vue.spec.ts | 7 +++++++ 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 playground/vue/ExportTypeProps1.vue create mode 100644 playground/vue/ExportTypeProps2.vue diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts index 477eda57..ed18e926 100644 --- a/packages/plugin-vue/src/index.ts +++ b/packages/plugin-vue/src/index.ts @@ -224,10 +224,12 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin { if (options.value.compiler.invalidateTypeCache) { options.value.compiler.invalidateTypeCache(ctx.file) } + const matchesFilter = filter.value(ctx.file) if (typeDepToSFCMap.has(ctx.file)) { - return handleTypeDepChange(typeDepToSFCMap.get(ctx.file)!, ctx) + const mod = handleTypeDepChange(typeDepToSFCMap.get(ctx.file)!, ctx) + if (!matchesFilter) return mod } - if (filter.value(ctx.file)) { + if (matchesFilter) { return handleHotUpdate( ctx, options.value, diff --git a/playground/vue/ExportTypeProps1.vue b/playground/vue/ExportTypeProps1.vue new file mode 100644 index 00000000..20b33143 --- /dev/null +++ b/playground/vue/ExportTypeProps1.vue @@ -0,0 +1,19 @@ + + + + + + + diff --git a/playground/vue/ExportTypeProps2.vue b/playground/vue/ExportTypeProps2.vue new file mode 100644 index 00000000..9ff2d0ec --- /dev/null +++ b/playground/vue/ExportTypeProps2.vue @@ -0,0 +1,8 @@ + + + diff --git a/playground/vue/Main.vue b/playground/vue/Main.vue index b25b54e9..5791c419 100644 --- a/playground/vue/Main.vue +++ b/playground/vue/Main.vue @@ -36,6 +36,8 @@ + +