@@ -51,24 +51,8 @@ const reportPeerDependencyStatusByDependee = (dep: Dependency, options: CliOptio
51
51
}
52
52
} ;
53
53
54
- export function checkPeerDependencies ( packageManager : string , options : CliOptions ) {
55
- const allNestedPeerDependencies = getAllNestedPeerDependencies ( options ) ;
56
-
57
- if ( options . orderBy === 'depender' ) {
58
- allNestedPeerDependencies . sort ( ( a , b ) => `${ a . depender } ${ a . name } ` . localeCompare ( `${ b . depender } ${ b . name } ` ) ) ;
59
- allNestedPeerDependencies . forEach ( dep => reportPeerDependencyStatusByDepender ( dep , options ) ) ;
60
- } else if ( options . orderBy === 'dependee' ) {
61
- allNestedPeerDependencies . sort ( ( a , b ) => `${ a . name } ${ a . depender } ` . localeCompare ( `${ b . name } ${ b . depender } ` ) ) ;
62
- allNestedPeerDependencies . forEach ( dep => reportPeerDependencyStatusByDependee ( dep , options ) ) ;
63
- }
64
-
65
- const problems = allNestedPeerDependencies . filter ( dep => ! dep . semverSatisfies && ! dep . isYalc ) ;
66
-
67
- if ( ! problems . length ) {
68
- console . log ( ' ✅ All peer dependencies are met' ) ;
69
- return ;
70
- }
71
54
55
+ function findSolutions ( problems : Dependency [ ] , allNestedPeerDependencies : Dependency [ ] ) {
72
56
console . log ( ) ;
73
57
console . log ( 'Searching for solutions...' ) ;
74
58
console . log ( ) ;
@@ -89,40 +73,76 @@ export function checkPeerDependencies(packageManager: string, options: CliOption
89
73
console . error ( ) ;
90
74
}
91
75
92
- const commandLines = getCommandLines ( packageManager , resolutionsWithSolutions ) ;
93
- if ( options . install && commandLines . length > 0 ) {
94
- console . log ( 'Installing peerDependencies...' ) ;
76
+ return { resolutionsWithSolutions, nosolution } ;
77
+ }
78
+
79
+ function installPeerDependencies ( commandLines : any [ ] , options : CliOptions , nosolution : Resolution [ ] , packageManager : string ) {
80
+ console . log ( 'Installing peerDependencies...' ) ;
81
+ console . log ( ) ;
82
+ commandLines . forEach ( command => {
83
+ console . log ( `$ ${ command } ` ) ;
84
+ exec ( command ) ;
95
85
console . log ( ) ;
96
- commandLines . forEach ( command => {
97
- console . log ( `$ ${ command } ` ) ;
98
- exec ( command ) ;
99
- console . log ( ) ;
100
- } ) ;
86
+ } ) ;
101
87
102
- const newUnsatisfiedDeps = getAllNestedPeerDependencies ( options )
103
- . filter ( dep => ! dep . semverSatisfies )
104
- . filter ( dep => ! nosolution . some ( x => isSameDep ( x . problem , dep ) ) ) ;
88
+ const newUnsatisfiedDeps = getAllNestedPeerDependencies ( options )
89
+ . filter ( dep => ! dep . semverSatisfies )
90
+ . filter ( dep => ! nosolution . some ( x => isSameDep ( x . problem , dep ) ) ) ;
105
91
106
- if ( nosolution . length === 0 && newUnsatisfiedDeps . length === 0 ) {
107
- console . log ( 'All peer dependencies are met' ) ;
108
- }
92
+ if ( nosolution . length === 0 && newUnsatisfiedDeps . length === 0 ) {
93
+ console . log ( 'All peer dependencies are met' ) ;
94
+ }
109
95
110
- if ( newUnsatisfiedDeps . length > 0 ) {
111
- console . log ( `Found ${ newUnsatisfiedDeps . length } new unmet peerDependencies...` ) ;
112
- if ( ++ recursiveCount < 5 ) {
113
- return checkPeerDependencies ( packageManager , options ) ;
114
- } else {
115
- console . error ( 'Recursion limit reached (5)' ) ;
116
- process . exit ( 5 )
117
- }
96
+ if ( newUnsatisfiedDeps . length > 0 ) {
97
+ console . log ( `Found ${ newUnsatisfiedDeps . length } new unmet peerDependencies...` ) ;
98
+ if ( ++ recursiveCount < 5 ) {
99
+ return checkPeerDependencies ( packageManager , options ) ;
100
+ } else {
101
+ console . error ( 'Recursion limit reached (5)' ) ;
102
+ process . exit ( 5 )
118
103
}
104
+ }
105
+ return ;
106
+ }
107
+
108
+ export function checkPeerDependencies ( packageManager : string , options : CliOptions ) {
109
+ const allNestedPeerDependencies = getAllNestedPeerDependencies ( options ) ;
110
+
111
+ if ( options . orderBy === 'depender' ) {
112
+ allNestedPeerDependencies . sort ( ( a , b ) => `${ a . depender } ${ a . name } ` . localeCompare ( `${ b . depender } ${ b . name } ` ) ) ;
113
+ allNestedPeerDependencies . forEach ( dep => reportPeerDependencyStatusByDepender ( dep , options ) ) ;
114
+ } else if ( options . orderBy === 'dependee' ) {
115
+ allNestedPeerDependencies . sort ( ( a , b ) => `${ a . name } ${ a . depender } ` . localeCompare ( `${ b . name } ${ b . depender } ` ) ) ;
116
+ allNestedPeerDependencies . forEach ( dep => reportPeerDependencyStatusByDependee ( dep , options ) ) ;
117
+ }
118
+
119
+ const problems = allNestedPeerDependencies . filter ( dep => ! dep . semverSatisfies && ! dep . isYalc ) ;
120
+
121
+ if ( ! problems . length ) {
122
+ console . log ( ' ✅ All peer dependencies are met' ) ;
119
123
return ;
124
+ }
120
125
121
- } else if ( commandLines . length > 0 ) {
122
- console . log ( `Install peerDependencies using ${ commandLines . length > 1 ? 'these commands:' : 'this command' } :` ) ;
123
- console . log ( ) ;
124
- commandLines . forEach ( command => console . log ( command ) ) ;
125
- console . log ( ) ;
126
+ if ( options . install ) {
127
+ const { nosolution, resolutionsWithSolutions } = findSolutions ( problems , allNestedPeerDependencies ) ;
128
+ const commandLines = getCommandLines ( packageManager , resolutionsWithSolutions ) ;
129
+
130
+ if ( commandLines . length ) {
131
+ return installPeerDependencies ( commandLines , options , nosolution , packageManager ) ;
132
+ }
133
+ } else if ( options . findSolutions ) {
134
+ const { resolutionsWithSolutions } = findSolutions ( problems , allNestedPeerDependencies ) ;
135
+ const commandLines = getCommandLines ( packageManager , resolutionsWithSolutions ) ;
136
+
137
+ if ( commandLines . length ) {
138
+ console . log ( `Install peerDependencies using ${ commandLines . length > 1 ? 'these commands:' : 'this command' } :` ) ;
139
+ console . log ( ) ;
140
+ commandLines . forEach ( command => console . log ( command ) ) ;
141
+ console . log ( ) ;
142
+ }
143
+ } else {
144
+ console . log ( `Install peerDependencies using "npx check-peer-dependencies --install"` ) ;
126
145
}
146
+
127
147
process . exit ( 1 ) ;
128
148
}
0 commit comments