11import path from "node:path" ;
2- import { resolve } from "pathe" ;
32import type { DevEnvironment , EnvironmentModuleNode } from "vite" ;
43
5- async function getViteModuleNode ( vite : DevEnvironment , file : string ) {
6- let nodePath = file ;
7- let node = vite . moduleGraph . getModuleById ( file ) ;
8-
9- if ( ! node ) {
10- const resolvedId = await vite . pluginContainer . resolveId ( file , undefined ) ;
11- if ( ! resolvedId ) return ;
12-
13- nodePath = resolvedId . id ;
14- node = vite . moduleGraph . getModuleById ( file ) ;
15- }
16-
17- if ( ! node ) {
18- nodePath = resolve ( nodePath ) ;
19- node = await vite . moduleGraph . getModuleByUrl ( file ) ;
20- }
21-
22- if ( ! node ) {
23- await vite . moduleGraph . ensureEntryFromUrl ( nodePath , false ) ;
24- node = vite . moduleGraph . getModuleById ( nodePath ) ;
25- }
26-
27- return node ;
4+ async function getViteModuleNode ( vite : DevEnvironment , file : string , importer ?: string ) {
5+ try {
6+ const res = await vite . fetchModule ( file , importer ) ;
7+ if ( ! ( "id" in res ) ) return ;
8+ return vite . moduleGraph . getModuleById ( res . id ) ;
9+ } catch ( err ) { }
2810}
2911
3012async function findModuleDependencies (
3113 vite : DevEnvironment ,
3214 file : string ,
3315 deps : Set < EnvironmentModuleNode > ,
3416 crawledFiles = new Set < string > ( ) ,
17+ importer ?: string ,
3518) {
3619 crawledFiles . add ( file ) ;
37- const module = await getViteModuleNode ( vite , file ) ;
20+ const module = await getViteModuleNode ( vite , file , importer ) ;
3821 if ( ! module ?. id || deps . has ( module ) ) return ;
3922
4023 deps . add ( module ) ;
@@ -53,7 +36,7 @@ async function findModuleDependencies(
5336 if ( crawledFiles . has ( dep ) ) {
5437 continue ;
5538 }
56- await findModuleDependencies ( vite , dep , deps , crawledFiles ) ;
39+ await findModuleDependencies ( vite , dep , deps , crawledFiles , module . id ) ;
5740 }
5841}
5942
0 commit comments