This repository was archived by the owner on Apr 4, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +15
-4
lines changed
packages/schematics/update/update Expand file tree Collapse file tree 2 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -790,10 +790,16 @@ export default function(options: UpdateSchema): Rule {
790790
791791 map ( npmPackageJsonMap => {
792792 // Augment the command line package list with packageGroups and forward peer dependencies.
793- npmPackageJsonMap . forEach ( ( npmPackageJson ) => {
794- _addPackageGroup ( packages , allDependencies , npmPackageJson , logger ) ;
795- _addPeerDependencies ( packages , allDependencies , npmPackageJson , logger ) ;
796- } ) ;
793+ // Each added package may uncover new package groups and peer dependencies, so we must
794+ // repeat this process until the package list stabilizes.
795+ let lastPackagesSize ;
796+ do {
797+ lastPackagesSize = packages . size ;
798+ npmPackageJsonMap . forEach ( ( npmPackageJson ) => {
799+ _addPackageGroup ( packages , allDependencies , npmPackageJson , logger ) ;
800+ _addPeerDependencies ( packages , allDependencies , npmPackageJson , logger ) ;
801+ } ) ;
802+ } while ( packages . size > lastPackagesSize ) ;
797803
798804 // Build the PackageInfo for each module.
799805 const packageInfoMap = new Map < string , PackageInfo > ( ) ;
Original file line number Diff line number Diff line change @@ -161,9 +161,11 @@ describe('@schematics/update', () => {
161161 dependencies [ '@angular/animations' ] = '5.1.0' ;
162162 dependencies [ '@angular/common' ] = '5.1.0' ;
163163 dependencies [ '@angular/compiler' ] = '5.1.0' ;
164+ dependencies [ '@angular/compiler-cli' ] = '5.1.0' ;
164165 dependencies [ '@angular/platform-browser' ] = '5.1.0' ;
165166 dependencies [ 'rxjs' ] = '5.5.0' ;
166167 dependencies [ 'zone.js' ] = '0.8.26' ;
168+ dependencies [ 'typescript' ] = '2.4.2' ;
167169 host . sync . write (
168170 normalize ( '/package.json' ) ,
169171 virtualFs . stringToFileBuffer ( JSON . stringify ( packageJson ) ) ,
@@ -176,6 +178,9 @@ describe('@schematics/update', () => {
176178 map ( tree => {
177179 const packageJson = JSON . parse ( tree . readContent ( '/package.json' ) ) ;
178180 expect ( packageJson [ 'dependencies' ] [ '@angular/core' ] [ 0 ] ) . toBe ( '6' ) ;
181+ expect ( packageJson [ 'dependencies' ] [ 'rxjs' ] [ 0 ] ) . toBe ( '6' ) ;
182+ expect ( packageJson [ 'dependencies' ] [ 'typescript' ] [ 0 ] ) . toBe ( '2' ) ;
183+ expect ( packageJson [ 'dependencies' ] [ 'typescript' ] [ 2 ] ) . toBe ( '7' ) ;
179184
180185 // Check install task.
181186 expect ( schematicRunner . tasks ) . toEqual ( [
You can’t perform that action at this time.
0 commit comments