@@ -42,7 +42,8 @@ const readFile = filename => JSON.parse(fs.readFileSync(filename).toString('utf-
42
42
const visitedDeps = [ ] ;
43
43
const peerDeps = [ ] ;
44
44
45
- checkInstalledPackage ( readFile ( PACKAGEJSON ) ) ;
45
+ const rootPackageJson = readFile ( PACKAGEJSON ) ;
46
+ checkInstalledPackage ( rootPackageJson ) ;
46
47
47
48
function getDependencies ( packageJson ) {
48
49
const { name, dependencies = { } , peerDependencies = { } } = packageJson ;
@@ -61,7 +62,10 @@ function checkInstalledPackage(packageJson) {
61
62
}
62
63
visitedDeps . push ( name ) ;
63
64
64
- peerDependencies . forEach ( peer => peerDeps . push ( { ...peer , depender : `${ packageJson . name } @${ packageJson . version } ` } ) ) ;
65
+ peerDependencies . forEach ( peer => {
66
+ peerDeps . push ( { ...peer , depender : `${ packageJson . name } @${ packageJson . version } ` } ) ;
67
+ } ) ;
68
+
65
69
dependencies . forEach ( dependency => {
66
70
const dependencyName = dependency . name ;
67
71
const installedPkgDir = `${ NODEMODULES } /${ dependencyName } ` ;
@@ -72,7 +76,9 @@ function checkInstalledPackage(packageJson) {
72
76
}
73
77
74
78
console . log ( 'Peer Dependencies:' ) ;
75
- peerDeps . forEach ( dep => console . log ( `${ dep . depender } requires ${ dep . name } ${ dep . version } ` ) ) ;
79
+ peerDeps . forEach ( dep => {
80
+ return console . log ( `${ dep . depender } requires ${ dep . name } ${ dep . version } ` ) ;
81
+ } ) ;
76
82
console . log ( '' ) ;
77
83
78
84
const missingPeers = [ ] ;
@@ -98,6 +104,13 @@ function checkPeerDependency(peerDependency) {
98
104
99
105
const installedVersion = readFile ( pkgJsonFile ) . version ;
100
106
107
+ const declaredVersion = rootPackageJson . dependencies && rootPackageJson . dependencies [ peerDependency . name ] ;
108
+ // ignore peer dependencies for yalc'd packages
109
+ if ( / f i l e : \. y a l c / . exec ( declaredVersion ) ) {
110
+ console . log ( `${ peerDependency . depender } depends on ${ peerDependency . name } ${ peerDependency . version } , but ignoring because ${ peerDependency . name } is yalc'd` ) .
111
+ return ;
112
+ }
113
+
101
114
if ( ! semver . satisfies ( installedVersion , peerDependency . version ) ) {
102
115
handleIncorrectPeerDependency ( peerDependency , installedVersion ) ;
103
116
}
@@ -111,6 +124,8 @@ if (missingPeers.length || incorrectPeers.length) {
111
124
incorrectPeers . forEach ( peer =>
112
125
console . error ( `Incorrect peer dependency: ${ peer . name } @${ peer . installedVersion } installed but ${ peer . depender } requires ${ peer . version } .` ) ) ;
113
126
console . error ( ) ;
127
+ } else {
128
+ console . log ( 'No problems found.' )
114
129
}
115
130
116
131
function semverReverseSort ( a , b ) {
@@ -134,10 +149,12 @@ function findPossibleResolution(packageName, allPeerDeps, isMissing = false) {
134
149
135
150
const foundVer = availableVersions . find ( ver => requiredPeerVersions . every ( peerVer => semver . satisfies ( ver , peerVer . version ) ) ) ;
136
151
if ( ! foundVer ) {
137
- console . error ( `Unable to find a version for ${ packageName } that satisfies the following peerDependencies:` ) ;
152
+ const errorPrefix = `Unable to find a version of ${ packageName } that satisfies the following peerDependencies:` ;
153
+ console . error ( ) ;
154
+ console . error ( errorPrefix ) ;
138
155
requiredPeerVersions . forEach ( peer => console . error ( `${ peer . depender } requires ${ peer . name } ${ peer . version } ` ) ) ;
139
- throw new Error ( `Unable to find a version for ${ packageName } that satisfies ` +
140
- `the following peerDependencies: ${ requiredPeerVersions . map ( x => x . version ) . join ( ) } `) ;
156
+ console . error ( ) ;
157
+ throw new Error ( ` ${ errorPrefix } ${ requiredPeerVersions . map ( x => x . version ) . join ( ) } `) ;
141
158
}
142
159
143
160
console . log ( `found ${ packageName } @${ foundVer } which satisfies ${ requiredPeerVersions . join ( ',' ) } ` ) ;
0 commit comments