From 6e29cd8bb61b236f55296c1d2ebca0fda9256de1 Mon Sep 17 00:00:00 2001 From: almadoro Date: Mon, 10 Nov 2025 00:23:07 +0100 Subject: [PATCH] fix(dev): trigger prune event when last import is removed (#20781) --- packages/vite/src/node/plugins/importAnalysis.ts | 12 +++++++++++- playground/hmr/prune/dep1.js | 7 ------- playground/hmr/prune/dep2-other.js | 0 3 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 playground/hmr/prune/dep2-other.js diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index 63cb172d052d06..340d522558b9ed 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -296,7 +296,17 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { !imports.length && !(this as unknown as TransformPluginContext)._addedImports ) { - importerModule.isSelfAccepting = false + const prunedImports = await moduleGraph.updateModuleInfo( + importerModule, + new Set(), + null, + new Set(), + null, + false, + ) + if (prunedImports) { + handlePrunedModules(prunedImports, environment) + } debug?.( `${timeFrom(msAtStart)} ${colors.dim( `[no imports] ${prettifyUrl(importer, root)}`, diff --git a/playground/hmr/prune/dep1.js b/playground/hmr/prune/dep1.js index 6621b014013ab3..8ad983f47fb5c4 100644 --- a/playground/hmr/prune/dep1.js +++ b/playground/hmr/prune/dep1.js @@ -1,8 +1 @@ import './dep2.js' - -// TODO: https://github.com/vitejs/vite/issues/20781 -// currently we need one more `import` in this module -// to trigger prune for depending module `dep2.js` since -// the prune event logic is skipped when `es-module-lexer` -// detects `imports.length === 0` -import './dep2-other.js' diff --git a/playground/hmr/prune/dep2-other.js b/playground/hmr/prune/dep2-other.js deleted file mode 100644 index e69de29bb2d1d6..00000000000000