@@ -1149,7 +1149,7 @@ function resolveManagedNpmInstallRoot(params: {
11491149 } ) ;
11501150 const npmRoot = resolveManagedNpmRootForInstall ( params ) ;
11511151 const installRoot = resolveManagedNpmRootPackageDir ( npmRoot , params . packageName ) ;
1152- if ( ! params . useGeneration || ! hasRetainedManagedNpmInstallMarker ( installRoot ) ) {
1152+ if ( ! hasRetainedManagedNpmInstallMarker ( installRoot ) ) {
11531153 return npmRoot ;
11541154 }
11551155 // Never mutate a retained tree: an older process may still hold lazy imports
@@ -1206,6 +1206,7 @@ async function resolveManagedNpmGenerationUseForInstall(params: {
12061206 npmBaseDir : string ;
12071207 packageName : string ;
12081208 requestedMode : "install" | "update" ;
1209+ npmResolution ?: NpmSpecResolution ;
12091210} ) : Promise < "none" | "update" | "retained-install" > {
12101211 const packageDirs = await listManagedNpmPackageDirsForPackage ( {
12111212 runtime : params . runtime ,
@@ -1218,6 +1219,20 @@ async function resolveManagedNpmGenerationUseForInstall(params: {
12181219 if ( packageDirs . length > 0 && ! hasNonRetainedPackageDir ) {
12191220 return "retained-install" ;
12201221 }
1222+ const generationUse =
1223+ params . requestedMode === "update" && hasNonRetainedPackageDir ? "update" : "none" ;
1224+ if ( params . npmResolution ) {
1225+ const candidateRoot = resolveManagedNpmRootForInstall ( {
1226+ npmBaseDir : params . npmBaseDir ,
1227+ packageName : params . packageName ,
1228+ npmResolution : params . npmResolution ,
1229+ useGeneration : generationUse !== "none" ,
1230+ } ) ;
1231+ const candidatePackageDir = resolveManagedNpmRootPackageDir ( candidateRoot , params . packageName ) ;
1232+ if ( hasRetainedManagedNpmInstallMarker ( candidatePackageDir ) ) {
1233+ return "retained-install" ;
1234+ }
1235+ }
12211236 if ( params . requestedMode === "update" ) {
12221237 return hasNonRetainedPackageDir ? "update" : "none" ;
12231238 }
@@ -1332,6 +1347,7 @@ async function installPluginFromManagedNpmRoot(
13321347 npmBaseDir,
13331348 packageName : params . packageName ,
13341349 requestedMode : mode ,
1350+ npmResolution : params . npmResolution ,
13351351 } ) ;
13361352 const npmRoot = resolveManagedNpmInstallRoot ( {
13371353 npmBaseDir,
@@ -3093,6 +3109,7 @@ export async function installPluginFromNpmSpec(
30933109 npmBaseDir,
30943110 packageName : parsedSpec . name ,
30953111 requestedMode : mode ,
3112+ npmResolution,
30963113 } ) ;
30973114 const npmRoot = resolveManagedNpmRootForInstall ( {
30983115 npmBaseDir,
@@ -3243,6 +3260,7 @@ export async function installPluginFromNpmPackArchive(
32433260 npmBaseDir,
32443261 packageName,
32453262 requestedMode : mode ,
3263+ npmResolution,
32463264 } ) ;
32473265 const npmProjectRoot = resolveManagedNpmRootForInstall ( {
32483266 npmBaseDir,
0 commit comments