@@ -934,7 +934,7 @@ export class InstallMain {
934934 await this . getRootComponentDirByRootId ( this . workspace . rootComponentsPath , envId ) ,
935935 {
936936 dependencies : {
937- ...( await this . _getEnvDependencies ( envId ) ) ,
937+ ...( await this . _getEnvDependencies ( envId , workspaceDeps ) ) ,
938938 ...workspaceDeps ,
939939 ...( await this . _getEnvPackage ( envId ) ) ,
940940 } ,
@@ -948,36 +948,29 @@ export class InstallMain {
948948 ) ;
949949 }
950950
951- private async _getEnvDependencies ( envId : ComponentID ) : Promise < Record < string , string > > {
951+ /**
952+ * Get the env's own peer dependencies from its policy (env.jsonc).
953+ * Resolves "+" version placeholders using workspaceDeps.
954+ */
955+ private async _getEnvDependencies (
956+ envId : ComponentID ,
957+ workspaceDeps : Record < string , string >
958+ ) : Promise < Record < string , string > > {
952959 const policy = await this . dependencyResolver . getEnvPolicyFromEnvId ( envId ) ;
953960 if ( ! policy ) return { } ;
954961
955- const filteredEntries = policy . selfPolicy . entries . filter ( ( { force, value } ) => force && value . version !== '-' ) ;
956-
957- // Check if any entry has a "+" version that needs resolving
958- const hasPlusVersion = filteredEntries . some ( ( { value } ) => value . version === '+' ) ;
959-
960- // Only load the env component if we need to resolve "+" versions
961- // Loading the env component can have side effects (importing it into scope)
962- let envDeps : DependencyList | undefined ;
963- if ( hasPlusVersion ) {
964- const envComponent = await this . envs . getEnvComponentByEnvId ( envId . toString ( ) , envId . toString ( ) ) ;
965- envDeps = envComponent ? this . dependencyResolver . getDependencies ( envComponent ) : undefined ;
966- }
967-
968962 return Object . fromEntries (
969- filteredEntries . map ( ( { dependencyId, value } ) => {
970- let version = value . version ;
971- // Resolve "+" version placeholders by looking up the already resolved version
972- // from the env component's dependencies (resolved in apply-overrides.resolveEnvPeerDepVersion)
973- if ( version === '+' && envDeps ) {
974- const found = envDeps . findByPkgNameOrCompId ( dependencyId ) ;
975- version = found ?. version ? snapToSemver ( found . version ) : '*' ;
976- } else if ( version === '+' ) {
977- version = '*' ;
978- }
979- return [ dependencyId , version ] ;
980- } )
963+ policy . selfPolicy . entries
964+ . filter ( ( { force, value } ) => force && value . version !== '-' )
965+ . map ( ( { dependencyId, value } ) => {
966+ let version = value . version ;
967+ // Resolve "+" version placeholders using workspace dependencies
968+ // Similar to WorkspaceManifest._resolvePlusVersions
969+ if ( version === '+' ) {
970+ version = workspaceDeps [ dependencyId ] || '*' ;
971+ }
972+ return [ dependencyId , version ] ;
973+ } )
981974 ) ;
982975 }
983976
0 commit comments