@@ -7,36 +7,51 @@ import { isPrereleaseCli, updateJsonFile } from '../../utils/project';
77const snapshots = require ( '../../ng-snapshot/package.json' ) ;
88
99export default async function ( ) {
10- let tag = ( await isPrereleaseCli ( ) ) ? '@next' : '' ;
11- await ng ( 'add' , `@angular/material${ tag } ` , '--skip-confirmation' ) ;
10+ // `@angular/material` pre-release may not support the current version of `@angular/core` pre-release.
11+ // due to the order of releases FW -> CLI -> Material
12+ // In this case peer dependency ranges may not resolve causing npm 7+ to fail during tests.
13+ const original_NPM_CONFIG_legacy_peer_deps = process . env [ 'NPM_CONFIG_legacy_peer_deps' ] ;
14+ const isPrerelease = await isPrereleaseCli ( ) ;
1215
13- const isSnapshotBuild = getGlobalVariable ( 'argv' ) [ 'ng-snapshots' ] ;
14- if ( isSnapshotBuild ) {
15- await updateJsonFile ( 'package.json' , ( packageJson ) => {
16- const dependencies = packageJson [ 'dependencies' ] ;
17- // Angular material adds dependencies on other Angular packages
18- // Iterate over all of the packages to update them to the snapshot version.
19- for ( const [ name , version ] of Object . entries ( snapshots . dependencies ) ) {
20- if ( name in dependencies ) {
21- dependencies [ name ] = version ;
16+ let tag = isPrerelease ? '@next' : '' ;
17+
18+ try {
19+ process . env [ 'NPM_CONFIG_legacy_peer_deps' ] = isPrerelease
20+ ? 'true'
21+ : original_NPM_CONFIG_legacy_peer_deps ;
22+
23+ await ng ( 'add' , `@angular/material${ tag } ` , '--skip-confirmation' ) ;
24+
25+ const isSnapshotBuild = getGlobalVariable ( 'argv' ) [ 'ng-snapshots' ] ;
26+ if ( isSnapshotBuild ) {
27+ await updateJsonFile ( 'package.json' , ( packageJson ) => {
28+ const dependencies = packageJson [ 'dependencies' ] ;
29+ // Angular material adds dependencies on other Angular packages
30+ // Iterate over all of the packages to update them to the snapshot version.
31+ for ( const [ name , version ] of Object . entries ( snapshots . dependencies ) ) {
32+ if ( name in dependencies ) {
33+ dependencies [ name ] = version ;
34+ }
2235 }
23- }
2436
25- dependencies [ '@angular/material-moment-adapter' ] =
26- snapshots . dependencies [ '@angular/material-moment-adapter' ] ;
27- } ) ;
28- await installWorkspacePackages ( ) ;
29- } else {
30- if ( ! tag ) {
31- const installedMaterialVersion = JSON . parse ( await readFile ( 'package.json' ) ) [ 'dependencies' ] [
32- '@angular/material'
33- ] ;
34- tag = `@${ installedMaterialVersion } ` ;
37+ dependencies [ '@angular/material-moment-adapter' ] =
38+ snapshots . dependencies [ '@angular/material-moment-adapter' ] ;
39+ } ) ;
40+ await installWorkspacePackages ( ) ;
41+ } else {
42+ if ( ! tag ) {
43+ const installedMaterialVersion = JSON . parse ( await readFile ( 'package.json' ) ) [ 'dependencies' ] [
44+ '@angular/material'
45+ ] ;
46+ tag = `@${ installedMaterialVersion } ` ;
47+ }
48+ await installPackage ( `@angular/material-moment-adapter${ tag } ` ) ;
3549 }
36- await installPackage ( `@angular/material-moment-adapter${ tag } ` ) ;
37- }
3850
39- await installPackage ( 'moment' ) ;
51+ await installPackage ( 'moment' ) ;
52+ } finally {
53+ process . env [ 'NPM_CONFIG_legacy_peer_deps' ] = original_NPM_CONFIG_legacy_peer_deps ;
54+ }
4055
4156 await ng ( 'build' ) ;
4257
0 commit comments