@@ -3,7 +3,7 @@ import { getActivePackageManager } from '../../utils/packages';
3
3
import { ng , npm } from '../../utils/process' ;
4
4
import { expectToFail } from '../../utils/utils' ;
5
5
6
- const errorText = 'The Angular CLI temporarily requires npm version 6 ' ;
6
+ const warningText = 'npm version 7.5.6 or higher is recommended ' ;
7
7
8
8
export default async function ( ) {
9
9
// Only relevant with npm as a package manager
@@ -18,53 +18,62 @@ export default async function() {
18
18
19
19
const currentDirectory = process . cwd ( ) ;
20
20
try {
21
- // Install version 7.x
22
- await npm ( 'install' , '--global' , 'npm@7 ' ) ;
21
+ // Install version >=7.5.6
22
+ await npm ( 'install' , '--global' , 'npm@>=7.5.6 ' ) ;
23
23
24
- // Ensure `ng add` exits and shows npm error
24
+ // Ensure `ng update` does not show npm warning
25
+ const { stderr : stderrUpdate1 } = await ng ( 'update' ) ;
26
+ if ( stderrUpdate1 . includes ( warningText ) ) {
27
+ throw new Error ( 'ng update expected to not show npm version warning.' ) ;
28
+ }
29
+
30
+ // Install version <7.5.6
31
+ await npm ( 'install' , '--global' , 'npm@7.4.0' ) ;
32
+
33
+ // Ensure `ng add` shows npm warning
25
34
const { message : stderrAdd } = await expectToFail ( ( ) => ng ( 'add' ) ) ;
26
- if ( ! stderrAdd . includes ( errorText ) ) {
27
- throw new Error ( 'ng add expected to show npm version error .' ) ;
35
+ if ( ! stderrAdd . includes ( warningText ) ) {
36
+ throw new Error ( 'ng add expected to show npm version warning .' ) ;
28
37
}
29
38
30
- // Ensure `ng update` exits and shows npm error
31
- const { message : stderrUpdate } = await expectToFail ( ( ) => ng ( 'update' ) ) ;
32
- if ( ! stderrUpdate . includes ( errorText ) ) {
33
- throw new Error ( 'ng update expected to show npm version error .' ) ;
39
+ // Ensure `ng update` shows npm warning
40
+ const { stderr : stderrUpdate2 } = await ng ( 'update' ) ;
41
+ if ( ! stderrUpdate2 . includes ( warningText ) ) {
42
+ throw new Error ( 'ng update expected to show npm version warning .' ) ;
34
43
}
35
44
36
45
// Ensure `ng build` executes successfully
37
46
const { stderr : stderrBuild } = await ng ( 'build' ) ;
38
- if ( stderrBuild . includes ( errorText ) ) {
39
- throw new Error ( 'ng build expected to not show npm version error .' ) ;
47
+ if ( stderrBuild . includes ( warningText ) ) {
48
+ throw new Error ( 'ng build expected to not show npm version warning .' ) ;
40
49
}
41
50
42
- // Ensure `ng new` exits and shows npm error
51
+ // Ensure `ng new` shows npm warning
43
52
// Must be outside the project for `ng new`
44
53
process . chdir ( '..' ) ;
45
54
const { message : stderrNew } = await expectToFail ( ( ) => ng ( 'new' ) ) ;
46
- if ( ! stderrNew . includes ( errorText ) ) {
47
- throw new Error ( 'ng new expected to show npm version error .' ) ;
55
+ if ( ! stderrNew . includes ( warningText ) ) {
56
+ throw new Error ( 'ng new expected to show npm version warning .' ) ;
48
57
}
49
58
50
- // Ensure `ng new --package-manager=npm` exits and shows npm error
59
+ // Ensure `ng new --package-manager=npm` shows npm warning
51
60
const { message : stderrNewNpm } = await expectToFail ( ( ) => ng ( 'new' , '--package-manager=npm' ) ) ;
52
- if ( ! stderrNewNpm . includes ( errorText ) ) {
53
- throw new Error ( 'ng new expected to show npm version error .' ) ;
61
+ if ( ! stderrNewNpm . includes ( warningText ) ) {
62
+ throw new Error ( 'ng new expected to show npm version warning .' ) ;
54
63
}
55
64
56
65
// Ensure `ng new --skip-install` executes successfully
57
66
const { stderr : stderrNewSkipInstall } = await ng ( 'new' , 'npm-seven-skip' , '--skip-install' ) ;
58
- if ( stderrNewSkipInstall . includes ( errorText ) ) {
59
- throw new Error ( 'ng new --skip-install expected to not show npm version error .' ) ;
67
+ if ( stderrNewSkipInstall . includes ( warningText ) ) {
68
+ throw new Error ( 'ng new --skip-install expected to not show npm version warning .' ) ;
60
69
}
61
70
62
71
// Ensure `ng new --package-manager=yarn` executes successfully
63
72
// Need an additional npmrc file since yarn does not use the NPM registry environment variable
64
73
await writeFile ( '.npmrc' , 'registry=http://localhost:4873' )
65
74
const { stderr : stderrNewYarn } = await ng ( 'new' , 'npm-seven-yarn' , '--package-manager=yarn' ) ;
66
- if ( stderrNewYarn . includes ( errorText ) ) {
67
- throw new Error ( 'ng new --package-manager=yarn expected to not show npm version error .' ) ;
75
+ if ( stderrNewYarn . includes ( warningText ) ) {
76
+ throw new Error ( 'ng new --package-manager=yarn expected to not show npm version warning .' ) ;
68
77
}
69
78
} finally {
70
79
// Cleanup extra test projects
0 commit comments