@@ -717,6 +717,7 @@ function _addPeerDependencies(
717
717
packages : Map < string , VersionRange > ,
718
718
allDependencies : ReadonlyMap < string , VersionRange > ,
719
719
npmPackageJson : NpmRepositoryPackageJson ,
720
+ npmPackageJsonMap : Map < string , NpmRepositoryPackageJson > ,
720
721
logger : logging . LoggerApi ,
721
722
) : void {
722
723
const maybePackage = packages . get ( npmPackageJson . name ) ;
@@ -737,9 +738,19 @@ function _addPeerDependencies(
737
738
const error = false ;
738
739
739
740
for ( const [ peer , range ] of Object . entries ( packageJson . peerDependencies || { } ) ) {
740
- if ( ! packages . has ( peer ) ) {
741
- packages . set ( peer , range as VersionRange ) ;
741
+ if ( packages . has ( peer ) ) {
742
+ continue ;
743
+ }
744
+
745
+ const peerPackageJson = npmPackageJsonMap . get ( peer ) ;
746
+ if ( peerPackageJson ) {
747
+ const peerInfo = _buildPackageInfo ( tree , packages , allDependencies , peerPackageJson , logger ) ;
748
+ if ( semver . satisfies ( peerInfo . installed . version , range ) ) {
749
+ continue ;
750
+ }
742
751
}
752
+
753
+ packages . set ( peer , range as VersionRange ) ;
743
754
}
744
755
745
756
if ( error ) {
@@ -860,7 +871,7 @@ export default function(options: UpdateSchema): Rule {
860
871
lastPackagesSize = packages . size ;
861
872
npmPackageJsonMap . forEach ( ( npmPackageJson ) => {
862
873
_addPackageGroup ( tree , packages , allDependencies , npmPackageJson , logger ) ;
863
- _addPeerDependencies ( tree , packages , allDependencies , npmPackageJson , logger ) ;
874
+ _addPeerDependencies ( tree , packages , allDependencies , npmPackageJson , npmPackageJsonMap , logger ) ;
864
875
} ) ;
865
876
} while ( packages . size > lastPackagesSize ) ;
866
877
0 commit comments