@@ -18,12 +18,19 @@ function getAllNestedPeerDependencies(options: CliOptions): Dependency[] {
18
18
return { ...dep , installedVersion, semverSatisfies, isYalc } ;
19
19
}
20
20
21
- return gatheredDependencies . map ( applySemverInformation ) ;
21
+ function applyIgnoreInformation ( dep : Dependency ) : Dependency {
22
+ const isIgnored = options . ignore . includes ( dep . name )
23
+ return { ...dep , isIgnored}
24
+ }
25
+
26
+ return gatheredDependencies . map ( applySemverInformation ) . map ( applyIgnoreInformation ) ;
22
27
}
23
28
24
29
let recursiveCount = 0 ;
25
30
26
- const reportPeerDependencyStatus = ( dep : Dependency , byDepender : boolean , showSatisfiedDep : boolean , showOptionalDep : boolean ) => {
31
+ const isProblem = ( dep : Dependency ) => ! dep . semverSatisfies && ! dep . isIgnored && ! dep . isYalc && ! dep . isPeerOptionalDependency ;
32
+
33
+ const reportPeerDependencyStatus = ( dep : Dependency , byDepender : boolean , showSatisfiedDep : boolean , verbose : boolean ) => {
27
34
const message = byDepender ?
28
35
`${ dep . depender . name } @${ dep . depender . version } requires ${ dep . name } ${ dep . version } ` :
29
36
`${ dep . name } ${ dep . version } is required by ${ dep . depender . name } @${ dep . depender . version } ` ;
@@ -35,14 +42,18 @@ const reportPeerDependencyStatus = (dep: Dependency, byDepender: boolean, showSa
35
42
} else if ( dep . isYalc ) {
36
43
console . log ( ` ☑️ ${ message } (${ dep . installedVersion } is installed via yalc)` ) ;
37
44
} else if ( dep . installedVersion && dep . isPeerOptionalDependency ) {
38
- if ( showOptionalDep ) {
39
- console . log ( ` ☑️ ${ message } ) OPTIONAL (${ dep . installedVersion } is installed)` ) ;
45
+ if ( verbose ) {
46
+ console . log ( ` ☑️ ${ message } ) OPTIONAL (${ dep . installedVersion } is installed)` ) ;
47
+ }
48
+ } else if ( dep . isIgnored ) {
49
+ if ( verbose ) {
50
+ console . log ( ` ☑️ ${ message } IGNORED (${ dep . name } is not installed)` ) ;
40
51
}
41
52
} else if ( dep . installedVersion ) {
42
53
console . log ( ` ❌ ${ message } ) (${ dep . installedVersion } is installed)` ) ;
43
54
} else if ( dep . isPeerOptionalDependency ) {
44
- if ( showOptionalDep ) {
45
- console . log ( ` ☑️ ${ message } OPTIONAL (${ dep . name } is not installed)` ) ;
55
+ if ( verbose ) {
56
+ console . log ( ` ☑️ ${ message } OPTIONAL (${ dep . name } is not installed)` ) ;
46
57
}
47
58
} else {
48
59
console . log ( ` ❌ ${ message } (${ dep . name } is not installed)` ) ;
@@ -82,16 +93,16 @@ function installPeerDependencies(commandLines: any[], options: CliOptions, nosol
82
93
console . log ( ) ;
83
94
} ) ;
84
95
85
- const newUnsatisfiedDeps = getAllNestedPeerDependencies ( options )
86
- . filter ( dep => ! dep . semverSatisfies )
96
+ const newProblems = getAllNestedPeerDependencies ( options )
97
+ . filter ( dep => isProblem ( dep ) )
87
98
. filter ( dep => ! nosolution . some ( x => isSameDep ( x . problem , dep ) ) ) ;
88
99
89
- if ( nosolution . length === 0 && newUnsatisfiedDeps . length === 0 ) {
100
+ if ( nosolution . length === 0 && newProblems . length === 0 ) {
90
101
console . log ( 'All peer dependencies are met' ) ;
91
102
}
92
103
93
- if ( newUnsatisfiedDeps . length > 0 ) {
94
- console . log ( `Found ${ newUnsatisfiedDeps . length } new unmet peerDependencies...` ) ;
104
+ if ( newProblems . length > 0 ) {
105
+ console . log ( `Found ${ newProblems . length } new unmet peerDependencies...` ) ;
95
106
if ( ++ recursiveCount < 5 ) {
96
107
return checkPeerDependencies ( packageManager , options ) ;
97
108
} else {
@@ -110,19 +121,17 @@ function report(options: CliOptions, allNestedPeerDependencies: Dependency[]) {
110
121
}
111
122
112
123
allNestedPeerDependencies . forEach ( dep => {
113
- const isUnsatisfied = ( dep : Dependency ) => ! dep . semverSatisfies && ! dep . isYalc ;
114
124
const relatedPeerDeps = allNestedPeerDependencies . filter ( other => other . name === dep . name && other !== dep ) ;
115
- const showIfSatisfied = options . verbose || relatedPeerDeps . some ( isUnsatisfied ) ;
116
- const showOptionalDep = options . verbose ;
117
- reportPeerDependencyStatus ( dep , options . orderBy === 'depender' , showIfSatisfied , showOptionalDep ) ;
125
+ const showIfSatisfied = options . verbose || relatedPeerDeps . some ( dep => isProblem ( dep ) ) ;
126
+ reportPeerDependencyStatus ( dep , options . orderBy === 'depender' , showIfSatisfied , options . verbose ) ;
118
127
} ) ;
119
128
}
120
129
121
130
export function checkPeerDependencies ( packageManager : string , options : CliOptions ) {
122
131
const allNestedPeerDependencies = getAllNestedPeerDependencies ( options ) ;
123
132
report ( options , allNestedPeerDependencies ) ;
124
133
125
- const problems = allNestedPeerDependencies . filter ( dep => ! dep . semverSatisfies && ! dep . isYalc && ! dep . isPeerOptionalDependency ) ;
134
+ const problems = allNestedPeerDependencies . filter ( dep => isProblem ( dep ) ) ;
126
135
127
136
if ( ! problems . length ) {
128
137
console . log ( ' ✅ All peer dependencies are met' ) ;
0 commit comments