Skip to content

Commit 3772836

Browse files
committed
refactor(@schematics/angular): automatically determine the version string to match latest Angular
Automatically determine the latest compatible Angular Framework version by using `~` matching for the current minor version of @schematics/angular.
1 parent 9dbe4a9 commit 3772836

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

packages/schematics/angular/utility/latest-versions.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
/** Retrieve the minor version for the provided version string. */
10+
function getEarliestMinorVersion(version: string) {
11+
const versionMatching = version.match(/^(\d+)\.(\d+)\.*/);
12+
13+
if (versionMatching === null) {
14+
throw Error('Unable to determine the minor version for the provided version');
15+
}
16+
const [_, major, minor] = versionMatching;
17+
18+
return `${major}.${minor}.0`;
19+
}
20+
921
export const latestVersions: Record<string, string> & {
1022
Angular: string;
1123
DevkitBuildAngular: string;
@@ -14,8 +26,10 @@ export const latestVersions: Record<string, string> & {
1426
// but ts_library doesn't support JSON inputs.
1527
...require('./latest-versions/package.json')['dependencies'],
1628

17-
// These versions should be kept up to date with latest Angular peer dependencies.
18-
Angular: '~12.2.0-next.2',
29+
// As Angular CLI works with same minor versions of Angular Framework, a tilde match for the current
30+
// Angular CLI minor version with earliest prerelease (appended with `-`) will match the latest
31+
// Angular Framework minor.
32+
Angular: `~${getEarliestMinorVersion(require('../package.json')['version'])}-`,
1933

2034
// Since @angular-devkit/build-angular and @schematics/angular are always
2135
// published together from the same monorepo, and they are both

0 commit comments

Comments
 (0)