@@ -113,18 +113,22 @@ function _validateForwardPeerDependencies(
113
113
name : string ,
114
114
infoMap : Map < string , PackageInfo > ,
115
115
peers : { [ name : string ] : string } ,
116
+ peersMeta : { [ name : string ] : { optional ?: boolean } } ,
116
117
logger : logging . LoggerApi ,
117
118
next : boolean ,
118
119
) : boolean {
119
120
let validationFailed = false ;
120
121
for ( const [ peer , range ] of Object . entries ( peers ) ) {
121
122
logger . debug ( `Checking forward peer ${ peer } ...` ) ;
122
123
const maybePeerInfo = infoMap . get ( peer ) ;
124
+ const isOptional = peersMeta [ peer ] && ! ! peersMeta [ peer ] . optional ;
123
125
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
+ }
128
132
129
133
continue ;
130
134
}
@@ -211,8 +215,9 @@ function _validateUpdatePackages(
211
215
const pkgLogger = logger . createChild ( name ) ;
212
216
logger . debug ( `${ name } ...` ) ;
213
217
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 ;
216
221
peerErrors
217
222
= _validateReversePeerDependencies ( name , target . version , infoMap , pkgLogger , next )
218
223
|| peerErrors ;
0 commit comments