diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts index b301a596..72f8944b 100644 --- a/packages/plugin-vue/src/index.ts +++ b/packages/plugin-vue/src/index.ts @@ -19,7 +19,7 @@ import { getSrcDescriptor, getTempSrcDescriptor, } from './utils/descriptorCache' -import { getResolvedScript, typeDepToSFCMap } from './script' +import { clearScriptCache, getResolvedScript, typeDepToSFCMap } from './script' import { transformMain } from './main' import { handleHotUpdate, handleTypeDepChange } from './handleHotUpdate' import { transformTemplateAsModule } from './template' @@ -361,5 +361,8 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin { } } }, + buildEnd() { + clearScriptCache() + }, } } diff --git a/packages/plugin-vue/src/script.ts b/packages/plugin-vue/src/script.ts index e0e821c3..4c97a0a6 100644 --- a/packages/plugin-vue/src/script.ts +++ b/packages/plugin-vue/src/script.ts @@ -4,8 +4,8 @@ import { cache as descriptorCache } from './utils/descriptorCache' import type { ResolvedOptions } from '.' // ssr and non ssr builds would output different script content -const clientCache = new WeakMap() -const ssrCache = new WeakMap() +let clientCache = new WeakMap() +let ssrCache = new WeakMap() export const typeDepToSFCMap = new Map>() @@ -32,6 +32,11 @@ export function setResolvedScript( ;(ssr ? ssrCache : clientCache).set(descriptor, script) } +export function clearScriptCache(): void { + clientCache = new WeakMap() + ssrCache = new WeakMap() +} + // Check if we can use compile template as inlined render function // inside