@@ -717,6 +717,7 @@ function _addPeerDependencies(
717717 packages : Map < string , VersionRange > ,
718718 allDependencies : ReadonlyMap < string , VersionRange > ,
719719 npmPackageJson : NpmRepositoryPackageJson ,
720+ npmPackageJsonMap : Map < string , NpmRepositoryPackageJson > ,
720721 logger : logging . LoggerApi ,
721722) : void {
722723 const maybePackage = packages . get ( npmPackageJson . name ) ;
@@ -737,9 +738,19 @@ function _addPeerDependencies(
737738 const error = false ;
738739
739740 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+ }
742751 }
752+
753+ packages . set ( peer , range as VersionRange ) ;
743754 }
744755
745756 if ( error ) {
@@ -860,7 +871,7 @@ export default function(options: UpdateSchema): Rule {
860871 lastPackagesSize = packages . size ;
861872 npmPackageJsonMap . forEach ( ( npmPackageJson ) => {
862873 _addPackageGroup ( tree , packages , allDependencies , npmPackageJson , logger ) ;
863- _addPeerDependencies ( tree , packages , allDependencies , npmPackageJson , logger ) ;
874+ _addPeerDependencies ( tree , packages , allDependencies , npmPackageJson , npmPackageJsonMap , logger ) ;
864875 } ) ;
865876 } while ( packages . size > lastPackagesSize ) ;
866877
0 commit comments