This repository was archived by the owner on Apr 4, 2025. It is now read-only.
File tree 2 files changed +15
-4
lines changed
packages/schematics/update/update
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 {
790
790
791
791
map ( npmPackageJsonMap => {
792
792
// 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 ) ;
797
803
798
804
// Build the PackageInfo for each module.
799
805
const packageInfoMap = new Map < string , PackageInfo > ( ) ;
Original file line number Diff line number Diff line change @@ -161,9 +161,11 @@ describe('@schematics/update', () => {
161
161
dependencies [ '@angular/animations' ] = '5.1.0' ;
162
162
dependencies [ '@angular/common' ] = '5.1.0' ;
163
163
dependencies [ '@angular/compiler' ] = '5.1.0' ;
164
+ dependencies [ '@angular/compiler-cli' ] = '5.1.0' ;
164
165
dependencies [ '@angular/platform-browser' ] = '5.1.0' ;
165
166
dependencies [ 'rxjs' ] = '5.5.0' ;
166
167
dependencies [ 'zone.js' ] = '0.8.26' ;
168
+ dependencies [ 'typescript' ] = '2.4.2' ;
167
169
host . sync . write (
168
170
normalize ( '/package.json' ) ,
169
171
virtualFs . stringToFileBuffer ( JSON . stringify ( packageJson ) ) ,
@@ -176,6 +178,9 @@ describe('@schematics/update', () => {
176
178
map ( tree => {
177
179
const packageJson = JSON . parse ( tree . readContent ( '/package.json' ) ) ;
178
180
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' ) ;
179
184
180
185
// Check install task.
181
186
expect ( schematicRunner . tasks ) . toEqual ( [
You can’t perform that action at this time.
0 commit comments