@@ -7,8 +7,6 @@ const DEBUG = false;
7
7
// Include development packages when checking whether a peerDependency has been
8
8
// satisfied.
9
9
const INCLUDE_DEV = true ;
10
- // Use the local package.json files or check NPM to determine the peerDependencies
11
- const USE_LOCAL_PEERDEPS = true ;
12
10
13
11
// Internal vars
14
12
const deps = new Map ( ) ;
@@ -52,29 +50,33 @@ const getNpmVersions = async () => {
52
50
53
51
// Grab the versions from NPM
54
52
return Promise . all ( Array . from ( toCheck . values ( ) ) . map ( async ( name ) => {
55
- if ( deps . has ( name ) ) {
53
+ if ( deps . has ( name ) && ! npmVers . has ( name ) ) {
56
54
await gatherNpmVer ( deps . get ( name ) , name ) ;
57
55
}
58
56
} ) ) ;
59
57
} ;
60
58
61
- // Get the peerDependencies
62
- const getNpmPeerDep = async ( range , name ) => {
63
- log ( `Getting peerDependencies for ${ name } ` ) ;
64
- const opts = [ 'view' , '--json' , name , 'peerDependencies' ] ;
65
- const npmPeerDeps = JSON . parse ( await exec ( 'npm' , opts ) ) ;
59
+ const addPeerDeps = ( name , peerDependencies ) => {
66
60
if ( ! peerDeps . has ( name ) ) {
67
61
peerDeps . set ( name , new Map ( ) ) ;
68
62
}
69
63
const currDeps = peerDeps . get ( name ) ;
70
- Object . entries ( npmPeerDeps ) . forEach ( ( entry ) => {
64
+ Object . entries ( peerDependencies ) . forEach ( ( entry ) => {
71
65
const [ depName , depRange ] = entry ;
72
- log ( `${ depName } @${ depRange } ` ) ;
66
+ log ( `${ name } peerDependency: ${ depName } @${ depRange } ` ) ;
73
67
currDeps . set ( depName , depRange ) ;
74
68
} ) ;
75
69
} ;
76
70
77
- const getLocalPeerDep = async ( range , name ) => {
71
+ // Get the peerDependencies
72
+ const getNpmPeerDep = async ( range , name ) => {
73
+ log ( `Getting NPM peerDependencies for ${ name } ` ) ;
74
+ const opts = [ 'view' , '--json' , name , 'peerDependencies' ] ;
75
+ const npmPeerDeps = JSON . parse ( await exec ( 'npm' , opts ) ) ;
76
+ addPeerDeps ( name , npmPeerDeps ) ;
77
+ } ;
78
+
79
+ const getPeerDep = async ( range , name ) => {
78
80
log ( `Getting peerDependencies for ${ name } ` ) ;
79
81
let packageInfo ;
80
82
try {
@@ -87,30 +89,24 @@ const getLocalPeerDep = async (range, name) => {
87
89
if ( ! packageInfo . peerDependencies ) {
88
90
return ;
89
91
}
90
- if ( ! peerDeps . has ( name ) ) {
91
- peerDeps . set ( name , new Map ( ) ) ;
92
+
93
+ if ( ! npmVers . has ( name ) ) {
94
+ await gatherNpmVer ( range , name ) ;
95
+ }
96
+ if ( semver . lt ( packageInfo . version , npmVers . get ( name ) . maximum ) ) {
97
+ // The installed version isn't the highest allowed, check the latest from NPM
98
+ log ( `${ name } : Installed version lower than allowed version. Using NPM to determine peerDependencies.` ) ;
99
+ await getNpmPeerDep ( range , name ) ;
100
+ } else {
101
+ log ( `${ name } : Using local package.json's to determine peerDependencies.` ) ;
102
+ addPeerDeps ( name , packageInfo . peerDependencies ) ;
92
103
}
93
- const currDeps = peerDeps . get ( name ) ;
94
- Object . entries ( packageInfo . peerDependencies ) . forEach ( ( entry ) => {
95
- const [ depName , depRange ] = entry ;
96
- log ( `${ depName } @${ depRange } ` ) ;
97
- currDeps . set ( depName , depRange ) ;
98
- } ) ;
99
104
} ;
100
105
101
106
const getPeerDeps = async ( ) => {
102
107
const promises = [ ] ;
103
- if ( USE_LOCAL_PEERDEPS ) {
104
- log ( "Using local package.json's to determine peerDependencies." ) ;
105
- } else {
106
- log ( 'Using NPM to determine peerDependencies.' ) ;
107
- }
108
108
deps . forEach ( ( range , name ) => {
109
- if ( USE_LOCAL_PEERDEPS ) {
110
- promises . push ( getLocalPeerDep ( range , name ) ) ;
111
- } else {
112
- promises . push ( getNpmPeerDep ( range , name ) ) ;
113
- }
109
+ promises . push ( getPeerDep ( range , name ) ) ;
114
110
} ) ;
115
111
return Promise . all ( promises ) ;
116
112
} ;
@@ -167,15 +163,21 @@ async function checkPeerDeps() {
167
163
log ( 'Dependencies:' ) ;
168
164
deps . forEach ( ( range , name ) => { log ( `${ name } : ${ range } ` ) ; } ) ;
169
165
166
+ log ( '' ) ;
167
+
170
168
log ( 'Determining peerDependencies...' ) ;
171
169
await getPeerDeps ( ) ;
172
170
log ( 'Done.' ) ;
173
171
172
+ log ( '' ) ;
173
+
174
174
// Get the NPM versions required to check the peerDependencies
175
- log ( 'Determining version ranges from NPM...' ) ;
175
+ log ( 'Determining peerDependency version ranges from NPM...' ) ;
176
176
await getNpmVersions ( ) ;
177
177
log ( 'Done.' ) ;
178
178
179
+ log ( '' ) ;
180
+
179
181
log ( 'Checking versions...' ) ;
180
182
await checkAllPeerDeps ( ) ;
181
183
log ( 'Done.' ) ;
0 commit comments