@@ -113,18 +113,22 @@ function _validateForwardPeerDependencies(
113113 name : string ,
114114 infoMap : Map < string , PackageInfo > ,
115115 peers : { [ name : string ] : string } ,
116+ peersMeta : { [ name : string ] : { optional ?: boolean } } ,
116117 logger : logging . LoggerApi ,
117118 next : boolean ,
118119) : boolean {
119120 let validationFailed = false ;
120121 for ( const [ peer , range ] of Object . entries ( peers ) ) {
121122 logger . debug ( `Checking forward peer ${ peer } ...` ) ;
122123 const maybePeerInfo = infoMap . get ( peer ) ;
124+ const isOptional = peersMeta [ peer ] && ! ! peersMeta [ peer ] . optional ;
123125 if ( ! maybePeerInfo ) {
124- logger . warn ( [
125- `Package ${ JSON . stringify ( name ) } has a missing peer dependency of` ,
126- `${ JSON . stringify ( peer ) } @ ${ JSON . stringify ( range ) } .` ,
127- ] . join ( ' ' ) ) ;
126+ if ( ! isOptional ) {
127+ logger . warn ( [
128+ `Package ${ JSON . stringify ( name ) } has a missing peer dependency of` ,
129+ `${ JSON . stringify ( peer ) } @ ${ JSON . stringify ( range ) } .` ,
130+ ] . join ( ' ' ) ) ;
131+ }
128132
129133 continue ;
130134 }
@@ -211,8 +215,9 @@ function _validateUpdatePackages(
211215 const pkgLogger = logger . createChild ( name ) ;
212216 logger . debug ( `${ name } ...` ) ;
213217
214- const peers = target . packageJson . peerDependencies || { } ;
215- peerErrors = _validateForwardPeerDependencies ( name , infoMap , peers , pkgLogger , next ) || peerErrors ;
218+ const { peerDependencies = { } , peerDependenciesMeta = { } } = target . packageJson ;
219+ peerErrors = _validateForwardPeerDependencies ( name , infoMap , peerDependencies ,
220+ peerDependenciesMeta , pkgLogger , next ) || peerErrors ;
216221 peerErrors
217222 = _validateReversePeerDependencies ( name , target . version , infoMap , pkgLogger , next )
218223 || peerErrors ;
0 commit comments