@@ -23,10 +23,9 @@ const pkg = require('../../package.json');
2323
2424function createUpdatedModulesTable ( modules ) {
2525 return createSimpleTable (
26- _ . map ( modules , ( { name, from, to, toVersion , latestVersion } ) => [
26+ _ . map ( modules , ( { name, from, to} ) => [
2727 strong ( name ) ,
28- from , '→' , colorizeDiff ( from , to ) ,
29- toVersion !== latestVersion ? '(ignored incompatible latest version ' + latestVersion + ')' : ''
28+ from , '→' , colorizeDiff ( from , to )
3029 ] )
3130 ) ;
3231}
@@ -77,25 +76,29 @@ export const handler = catchAsyncError(async opts => {
7776 . map ( ( { ncuValue} ) => ncuValue )
7877 . join ( ',' ) ;
7978 const currentVersions = ncu . getCurrentDependencies ( packageJson , { dep : ncuDepGroups } ) ;
80- const latestVersions = await ncu . queryVersions ( currentVersions , { versionTarget : 'latest' } ) ;
8179 const peerDependencies = ncu . getPeerDependencies ( currentVersions , { } ) ;
82- const peerCompatibleVersions = await ncu . queryVersions (
83- currentVersions ,
84- { versionTarget : 'latest' , peerDependencies, loglevel : 'silent' }
85- ) ;
86- const upgradedPeerCompatibleVersions = ncu . upgradeDependencies ( currentVersions , peerCompatibleVersions ) ;
87- let upgradedVersions = ncu . upgradeDependencies ( currentVersions , latestVersions ) ;
80+ const compatibleVersions = await ncu . queryVersions ( currentVersions , { versionTarget : 'latest' , peerDependencies} ) ;
81+ const latestVersions = await ncu . queryVersions ( currentVersions , { versionTarget : 'latest' , loglevel : 'silent' } ) ;
8882
8983 // Filtering modules that have to be updated
90- upgradedVersions = _ . pickBy (
91- upgradedVersions ,
84+ const upgradedLatestVersions = _ . pickBy (
85+ ncu . upgradeDependencies ( currentVersions , latestVersions ) ,
86+ ( newVersion , moduleName ) => filterModuleName ( moduleName )
87+ ) ;
88+ const upgradedCompatibleVersions = _ . pickBy (
89+ ncu . upgradeDependencies ( currentVersions , compatibleVersions ) ,
9290 ( newVersion , moduleName ) => filterModuleName ( moduleName )
9391 ) ;
9492
95- if ( _ . isEmpty ( upgradedVersions ) ) {
93+ if ( _ . isEmpty ( upgradedLatestVersions ) ) {
9694 return console . log ( success ( 'All dependencies are up-to-date!' ) ) ;
9795 }
9896
97+ const incompatibleVersions = _ . pickBy (
98+ upgradedLatestVersions ,
99+ ( newVersion , moduleName ) => upgradedCompatibleVersions [ moduleName ] !== newVersion
100+ ) ;
101+
99102 // Getting the list of ignored modules
100103 const config = new Config ( ) ;
101104 config . ignore = config . ignore || { } ;
@@ -105,15 +108,14 @@ export const handler = catchAsyncError(async opts => {
105108 map . convert ( { 'cap' : false } ) ( ( newVersion , moduleName ) => ( {
106109 name : moduleName ,
107110 from : currentVersions [ moduleName ] ,
108- to : upgradedPeerCompatibleVersions [ moduleName ] || currentVersions [ moduleName ] ,
109- toVersion : peerCompatibleVersions [ moduleName ] ,
110- latestVersion : latestVersions [ moduleName ]
111+ to : upgradedCompatibleVersions [ moduleName ] ,
112+ toVersion : compatibleVersions [ moduleName ]
111113 } ) ) ,
112114 partition ( module => (
113115 _ . has ( config . ignore , module . name ) &&
114116 semver . satisfies ( module . toVersion , config . ignore [ module . name ] . versions )
115117 ) )
116- ) ( upgradedVersions ) ;
118+ ) ( upgradedCompatibleVersions ) ;
117119
118120 // Moving `@types/*` modules right below their original modules
119121 sortModules ( modulesToUpdate ) ;
@@ -130,6 +132,15 @@ export const handler = catchAsyncError(async opts => {
130132 ) ;
131133 }
132134
135+ if ( ! _ . isEmpty ( incompatibleVersions ) ) {
136+ const rows = _ . map ( Object . entries ( incompatibleVersions ) , ( [ name , to ] ) => [
137+ strong ( name ) ,
138+ currentVersions [ name ] , '→' , colorizeDiff ( currentVersions [ name ] , to )
139+ ] ) ;
140+
141+ console . log ( `\n${ strong ( 'Ignored incompatible updates (peer dependencies):' ) } \n\n${ createSimpleTable ( rows ) } ` ) ;
142+ }
143+
133144 if ( ! _ . isEmpty ( ignoredModules ) ) {
134145 const rows = _ . map ( ignoredModules , ( { name, from, to} ) => [
135146 strong ( name ) ,
@@ -151,7 +162,7 @@ export const handler = catchAsyncError(async opts => {
151162 let isUpdateFinished = false ;
152163 while ( modulesToUpdate . length && ! isUpdateFinished ) {
153164 const outdatedModule = modulesToUpdate . shift ( ) ;
154- const { name, from, to} = outdatedModule ;
165+ const { name, from, to, toVersion } = outdatedModule ;
155166 let { changelogUrl, homepage} = outdatedModule ;
156167
157168 // Adds new line
@@ -218,7 +229,7 @@ export const handler = catchAsyncError(async opts => {
218229 break ;
219230
220231 case 'ignore' : {
221- const { versions, reason} = await askIgnoreFields ( latestVersions [ name ] ) ;
232+ const { versions, reason} = await askIgnoreFields ( toVersion ) ;
222233 config . ignore [ name ] = { versions, reason} ;
223234 break ;
224235 }
0 commit comments