Skip to content

Commit 82976ec

Browse files
committed
build: update ng-dev config to work with Node.js 18.19
Update ng-dev setup to work with 18.19 For more details, refer to: TypeStrong/ts-node#2094 (cherry picked from commit a6129a6)
1 parent 5f89c4c commit 82976ec

File tree

13 files changed

+80
-49
lines changed

13 files changed

+80
-49
lines changed

.ng-dev/caretaker.mts renamed to .ng-dev/caretaker.mjs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
import { CaretakerConfig } from '@angular/ng-dev';
2-
3-
/** The configuration for `ng-dev caretaker` commands. */
4-
export const caretaker: CaretakerConfig = {
1+
/**
2+
* The configuration for `ng-dev caretaker` commands.
3+
*
4+
* @type { import("@angular/ng-dev").CaretakerConfig }
5+
*/
6+
export const caretaker = {
57
githubQueries: [
68
{
79
name: 'Merge Queue',
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
import { CommitMessageConfig } from '@angular/ng-dev';
2-
import packages from '../lib/packages.js';
1+
import { getReleasablePackages } from '../lib/packages.mjs';
32

43
/**
54
* The configuration for `ng-dev commit-message` commands.
5+
*
6+
* @type { import("@angular/ng-dev").CommitMessageConfig }
67
*/
7-
export const commitMessage: CommitMessageConfig = {
8+
export const commitMessage = {
89
maxLineLength: Infinity,
910
minBodyLength: 0,
1011
minBodyLengthTypeExcludes: ['docs'],
1112
// Note: When changing this logic, also change the `contributing.ejs` file.
12-
scopes: [...Object.keys(packages.packages)],
13+
scopes: getReleasablePackages().map(({ name }) => name),
1314
};
File renamed without changes.

.ng-dev/format.mts renamed to .ng-dev/format.mjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { FormatConfig } from '@angular/ng-dev';
2-
31
/**
42
* Configuration for the `ng-dev format` command.
3+
*
4+
* @type { import("@angular/ng-dev").FormatConfig }
55
*/
6-
export const format: FormatConfig = {
6+
export const format = {
77
'prettier': {
88
matchers: ['**/*.{ts,js,json,yml,yaml,md}'],
99
},

.ng-dev/github.mts renamed to .ng-dev/github.mjs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { GithubConfig } from '@angular/ng-dev';
2-
31
/**
42
* Github configuration for the ng-dev command. This repository is
5-
* uses as remote for the merge script.
3+
* used as remote for the merge script.
4+
*
5+
* @type { import("@angular/ng-dev").GithubConfig }
66
*/
7-
export const github: GithubConfig = {
7+
export const github = {
88
owner: 'angular',
99
name: 'angular-cli',
1010
mainBranchName: 'main',

.ng-dev/pull-request.mts renamed to .ng-dev/pull-request.mjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { PullRequestConfig } from '@angular/ng-dev';
2-
31
/**
42
* Configuration for the merge tool in `ng-dev`. This sets up the labels which
53
* are respected by the merge script (e.g. the target labels).
4+
*
5+
* @type { import("@angular/ng-dev").PullRequestConfig }
66
*/
7-
export const pullRequest: PullRequestConfig = {
7+
export const pullRequest = {
88
githubApiMerge: {
99
default: 'rebase',
1010
labels: [{ pattern: 'merge: squash commits', method: 'squash' }],

.ng-dev/release.mts renamed to .ng-dev/release.mjs

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
import semver from 'semver';
2-
import { ReleaseConfig } from '@angular/ng-dev';
3-
import packages from '../lib/packages.js';
2+
import { getReleasablePackages } from '../lib/packages.mjs';
43

5-
const npmPackages = Object.entries(packages.releasePackages).map(([name, { experimental }]) => ({
6-
name,
7-
experimental,
8-
}));
4+
const packages = getReleasablePackages();
95

10-
/** Configuration for the `ng-dev release` command. */
11-
export const release: ReleaseConfig = {
6+
/**
7+
* Configuration for the `ng-dev release` command.
8+
*
9+
* @type { import("@angular/ng-dev").ReleaseConfig }
10+
*/
11+
export const release = {
1212
representativeNpmPackage: '@angular/cli',
13-
npmPackages,
13+
npmPackages: packages.map(({ name, experimental }) => ({ name, experimental })),
1414
buildPackages: async () => {
1515
// The `performNpmReleaseBuild` function is loaded at runtime to avoid loading additional
1616
// files and dependencies unless a build is required.
1717
const { performNpmReleaseBuild } = await import('../scripts/build-packages-dist.mjs');
1818
return performNpmReleaseBuild();
1919
},
20-
prereleaseCheck: async (newVersionStr: string) => {
20+
prereleaseCheck: async (newVersionStr) => {
2121
const newVersion = new semver.SemVer(newVersionStr);
2222
const { assertValidDependencyRanges } = await import(
2323
'../scripts/release-checks/dependency-ranges/index.mjs'
2424
);
2525

26-
await assertValidDependencyRanges(newVersion, packages.releasePackages);
26+
await assertValidDependencyRanges(newVersion, packages);
2727
},
2828
releaseNotes: {
2929
groupOrder: [

.ng-dev/tsconfig.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
{
22
"extends": "../tsconfig.json",
33
"compilerOptions": {
4+
"resolveJsonModule": true,
5+
"allowJs": true,
46
"module": "Node16",
57
"moduleResolution": "Node16",
8+
"checkJs": true,
69
"noEmit": true,
710
"types": []
811
},
9-
"include": ["**/*.mts"],
12+
"include": ["**/*.mjs"],
1013
"exclude": []
1114
}

lib/packages.mjs

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import fastGlob from 'fast-glob';
10+
import { readFileSync } from 'node:fs';
11+
import { createRequire } from 'node:module';
12+
13+
const require = createRequire(import.meta.url);
14+
const monorepoData = require('../.monorepo.json');
15+
16+
export function getReleasablePackages() {
17+
const packages = [];
18+
for (const pkg of fastGlob.sync('./packages/*/*/package.json')) {
19+
const data = JSON.parse(readFileSync(pkg, 'utf-8'));
20+
if (!(data.name in monorepoData.packages)) {
21+
throw new Error(`${data.name} does not exist in .monorepo.json`);
22+
}
23+
24+
if (data.private) {
25+
continue;
26+
}
27+
28+
packages.push(data);
29+
}
30+
31+
return packages;
32+
}

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222
"build": "node ./bin/devkit-admin build",
2323
"build-tsc": "tsc -p tsconfig.json",
2424
"lint": "eslint --cache --max-warnings=0 \"**/*.ts\"",
25-
"ng-dev": "ts-node --esm --project .ng-dev/tsconfig.json --transpile-only node_modules/@angular/ng-dev/bundles/cli.mjs",
2625
"templates": "node ./bin/devkit-admin templates",
2726
"validate": "node ./bin/devkit-admin validate",
2827
"postinstall": "yarn webdriver-update && yarn husky install",
2928
"//webdriver-update-README": "ChromeDriver version must match Puppeteer Chromium version, see https://github.com/GoogleChrome/puppeteer/releases http://chromedriver.chromium.org/downloads",
3029
"webdriver-update": "webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21",
3130
"public-api:check": "node goldens/public-api/manage.js test",
31+
"ng-dev": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only node_modules/@angular/ng-dev/bundles/cli.mjs",
3232
"public-api:update": "node goldens/public-api/manage.js accept",
3333
"ts-circular-deps:check": "yarn -s ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.js",
3434
"ts-circular-deps:approve": "yarn -s ng-dev ts-circular-deps approve --config ./packages/circular-deps-test.conf.js",
@@ -69,7 +69,7 @@
6969
"@angular/forms": "16.1.7",
7070
"@angular/localize": "16.1.7",
7171
"@angular/material": "16.1.5",
72-
"@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#23787ae14d5da7e8c89d1aaee362d1722b87d618",
72+
"@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#262c6ede0815bb2ba6fbe6f1790eaaa77ce84c9c",
7373
"@angular/platform-browser": "16.1.7",
7474
"@angular/platform-browser-dynamic": "16.1.7",
7575
"@angular/platform-server": "16.1.7",

scripts/release-checks/dependency-ranges/index.mts

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
import { Log, ReleasePrecheckError, bold } from '@angular/ng-dev';
910
import semver from 'semver';
10-
import { Log, bold, ReleasePrecheckError } from '@angular/ng-dev';
11-
import { checkPeerDependencies } from './peer-deps-check.mjs';
1211
import { checkSchematicsAngularLatestVersion } from './latest-versions-check.mjs';
13-
import { PackageMap } from '../../../lib/packages.js';
12+
import { PackageJson, checkPeerDependencies } from './peer-deps-check.mjs';
1413

1514
/** Environment variable that can be used to skip this pre-check. */
1615
const skipEnvVar = 'SKIP_DEPENDENCY_RANGE_PRECHECK';
@@ -26,7 +25,7 @@ const skipEnvVar = 'SKIP_DEPENDENCY_RANGE_PRECHECK';
2625
*/
2726
export async function assertValidDependencyRanges(
2827
newVersion: semver.SemVer,
29-
allPackages: PackageMap,
28+
allPackages: PackageJson[],
3029
) {
3130
if (process.env[skipEnvVar] === '1') {
3231
return;

scripts/release-checks/dependency-ranges/peer-deps-check.mts

+4-10
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,20 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import path from 'path';
10-
import url from 'url';
119
import semver from 'semver';
12-
import { PackageMap } from '../../../lib/packages.js';
1310

1411
/** Path to the current directory. */
15-
const currentDir = path.dirname(url.fileURLToPath(import.meta.url));
1612

17-
/** Path to the project directory. */
18-
const projectDir = path.join(currentDir, '../../../');
1913

2014
/** Describes a parsed `package.json` file. */
21-
interface PackageJson {
15+
export interface PackageJson {
2216
name?: string;
2317
peerDependencies?: Record<string, string>;
2418
}
2519

2620
export async function checkPeerDependencies(
2721
newVersion: semver.SemVer,
28-
allPackages: PackageMap,
22+
allPackages: PackageJson[],
2923
): Promise<string[]> {
3024
const { major, minor } = newVersion;
3125
const isPrerelease = !!newVersion.prerelease[0];
@@ -39,8 +33,8 @@ export async function checkPeerDependencies(
3933
}
4034

4135
const failures: string[] = [];
42-
for (const pkgInfo of Object.values(allPackages)) {
43-
failures.push(...checkPackage(pkgInfo.packageJson, expectedFwPeerDep));
36+
for (const pkgInfo of allPackages) {
37+
failures.push(...checkPackage(pkgInfo, expectedFwPeerDep));
4438
}
4539

4640
return failures;

yarn.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,9 @@
289289
"@material/typography" "15.0.0-canary.b994146f6.0"
290290
tslib "^2.3.0"
291291

292-
"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#23787ae14d5da7e8c89d1aaee362d1722b87d618":
293-
version "0.0.0-25a781ff4fff8c13348ddf335e8067f103cb9035"
294-
resolved "https://github.com/angular/dev-infra-private-ng-dev-builds.git#23787ae14d5da7e8c89d1aaee362d1722b87d618"
292+
"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#262c6ede0815bb2ba6fbe6f1790eaaa77ce84c9c":
293+
version "0.0.0-96a8277d21eb61a2370061717ffa8dee5668caa0"
294+
resolved "https://github.com/angular/dev-infra-private-ng-dev-builds.git#262c6ede0815bb2ba6fbe6f1790eaaa77ce84c9c"
295295
dependencies:
296296
"@yarnpkg/lockfile" "^1.1.0"
297297
typescript "~4.9.0"

0 commit comments

Comments
 (0)