@@ -14,15 +14,22 @@ export class NpmNodeModulesCollector extends NodeModulesCollector<NpmDependency,
1414
1515 protected async collectAllDependencies ( tree : NpmDependency ) {
1616 for ( const [ key , value ] of Object . entries ( tree . dependencies || { } ) ) {
17+ const { id : childDependencyId , pkgOverride } = this . normalizePackageVersion ( key , value )
18+
19+ // Only skip if this exact version is already collected AND it's a duplicate reference
20+ // We need to collect nested versions even if a different version exists at top level
1721 if ( this . isDuplicatedNpmDependency ( value ) ) {
22+ // This is a reference to a package already defined elsewhere in the tree
23+ // Still add it to allDependencies if we haven't seen this exact version yet
24+ if ( ! this . allDependencies . has ( childDependencyId ) ) {
25+ this . allDependencies . set ( childDependencyId , pkgOverride )
26+ }
1827 continue
1928 }
20- // Use the key (alias name) instead of value.name for npm aliased packages
21- // e.g., { "foo": { name: "@scope /bar", ... } } should be stored as "foo@version"
22- // This ensures aliased packages are copied to the correct location in node_modules
23- const normalizedDep : NpmDependency = key !== value . name ? { ...value , name : key } : value
24- this . allDependencies . set ( this . packageVersionString ( normalizedDep ) , normalizedDep )
25- await this . collectAllDependencies ( value )
29+
30+ // Always store this dependency and recurse into its children
31+ this . allDependencies . set ( childDependencyId , pkgOverride )
32+ await this . collectAllDependencies ( pkgOverride )
2633 }
2734 }
2835
@@ -51,8 +58,8 @@ export class NpmNodeModulesCollector extends NodeModulesCollector<NpmDependency,
5158 if ( Object . keys ( dependency ) . length === 0 ) {
5259 continue
5360 }
54- const childDependencyId = this . packageVersionString ( { name : packageName , version : dependency . version } )
55- await this . extractProductionDependencyGraph ( dependency , childDependencyId )
61+ const { id : childDependencyId , pkgOverride } = this . normalizePackageVersion ( packageName , dependency )
62+ await this . extractProductionDependencyGraph ( pkgOverride , childDependencyId )
5663 collectedDependencies . push ( childDependencyId )
5764 }
5865 }
0 commit comments