From 6758f9326e16f96f5be18ae72ca6dec263e2df69 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 18 Dec 2025 15:28:08 -0500 Subject: [PATCH] build: use Node.js built-in TypeScript support for dev-infra scripts This change removes the use of `tsx` to execute both `ng-dev` and the repo level development scripts. --- .ng-dev/release.mjs | 2 +- package.json | 12 ++++++------ ...deps-test.conf.js => circular-deps-test.conf.cjs} | 0 scripts/benchmarks/index.mts | 11 ++++++++--- scripts/benchmarks/targets.mts | 2 +- scripts/build/angular-in-memory-web-api.mts | 2 +- scripts/build/build-packages-dist.mts | 6 +++--- scripts/build/package-builder.mts | 2 +- scripts/build/zone-js-builder.mts | 2 +- scripts/tsconfig.json | 3 ++- vscode-ng-language-service/package.json | 4 ++-- 11 files changed, 26 insertions(+), 20 deletions(-) rename packages/{circular-deps-test.conf.js => circular-deps-test.conf.cjs} (100%) diff --git a/.ng-dev/release.mjs b/.ng-dev/release.mjs index 974cc5df8fc..f7cf11f6fbf 100644 --- a/.ng-dev/release.mjs +++ b/.ng-dev/release.mjs @@ -27,7 +27,7 @@ export const release = { buildPackages: async () => { // The buildTargetPackages function is loaded at runtime as the loading the script // causes an invocation of Bazel. - const {performNpmReleaseBuild} = await import('../scripts/build/package-builder.mjs'); + const {performNpmReleaseBuild} = await import('../scripts/build/package-builder.mts'); return performNpmReleaseBuild(); }, releaseNotes: { diff --git a/package.json b/package.json index 84e7711e5bc..21722a76333 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ }, "scripts": { "prepare": "husky", - "ng-dev": "tsx --tsconfig .ng-dev/tsconfig.json node_modules/@angular/ng-dev/bundles/cli.mjs", - "build": "tsx --tsconfig scripts/tsconfig.json scripts/build/build-packages-dist.mts", + "ng-dev": "ng-dev", + "build": "node scripts/build/build-packages-dist.mts", "test": "bazelisk test", "test:ci": "bazelisk test -- //... -//integration/... -//adev/... -//vscode-ng-language-service/... -//devtools/... -//modules/ssr-benchmarks/...", "integration-tests:ci": "bazelisk test -- //integration/...", @@ -30,7 +30,7 @@ "public-api:update": "node goldens/public-api/manage.js accept", "symbol-extractor:check": "node tools/symbol-extractor/run_all_symbols_extractor_tests.js test", "symbol-extractor:update": "node tools/symbol-extractor/run_all_symbols_extractor_tests.js accept", - "ts-circular-deps:check": "pnpm -s ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.js", + "ts-circular-deps:check": "pnpm -s ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.cjs", "check-tooling-setup": "tsc --project scripts/tsconfig.json", "devtools:devserver": "ibazel run //devtools/src:devserver", "devtools:test:e2e": "cypress run --project ./devtools/cypress", @@ -41,14 +41,14 @@ "devtools:build:firefox:release": "pnpm run -s devtools:build:firefox --jobs 4", "devtools:test": "bazelisk test --//devtools/projects/shell-browser/src:flag_browser=chrome -- //devtools/...", "devtools:test:unit": "bazelisk test -- //devtools/...", - "devtools:release": "tsx --tsconfig=devtools/tsconfig.json devtools/tools/release.mts", + "devtools:release": "node devtools/tools/release.mts", "adev": "[[ -n $CI ]] && echo 'Cannot run this pnpm script on CI' && exit 1 || ibazel run //adev:build.serve", "adev:build": "[[ -n $CI ]] && echo 'Cannot run this pnpm script on CI' && exit 1 || bazel build //adev:build", "dev": "pnpm --filter=dev-app dev", "dev:prod": "pnpm --filter=dev-app dev:prod", "dev:build": "pnpm --filter=dev-app dev:build", - "benchmarks": "tsx --tsconfig=scripts/tsconfig.json scripts/benchmarks/index.mts", - "diff-release-package": "tsx --tsconfig=scripts/tsconfig.json scripts/diff-release-package.mts" + "benchmarks": "node scripts/benchmarks/index.mts", + "diff-release-package": "node scripts/diff-release-package.mts" }, "// 1": "dependencies are used locally and by bazel", "dependencies": { diff --git a/packages/circular-deps-test.conf.js b/packages/circular-deps-test.conf.cjs similarity index 100% rename from packages/circular-deps-test.conf.js rename to packages/circular-deps-test.conf.cjs diff --git a/scripts/benchmarks/index.mts b/scripts/benchmarks/index.mts index bb2415c7b16..ae06736104d 100644 --- a/scripts/benchmarks/index.mts +++ b/scripts/benchmarks/index.mts @@ -10,9 +10,14 @@ import {setOutput} from '@actions/core'; import {GitClient, Log, bold, green, yellow} from '@angular/ng-dev'; import {select} from '@inquirer/prompts'; import yargs from 'yargs'; -import {collectBenchmarkResults} from './results.mjs'; -import {ResolvedTarget, findBenchmarkTargets, getTestlogPath, resolveTarget} from './targets.mjs'; -import {exec} from './utils.mjs'; +import {collectBenchmarkResults} from './results.mts'; +import { + type ResolvedTarget, + findBenchmarkTargets, + getTestlogPath, + resolveTarget, +} from './targets.mts'; +import {exec} from './utils.mts'; const benchmarkTestFlags = [ '--cache_test_results=no', diff --git a/scripts/benchmarks/targets.mts b/scripts/benchmarks/targets.mts index c3c31c5870b..9699dfa2762 100644 --- a/scripts/benchmarks/targets.mts +++ b/scripts/benchmarks/targets.mts @@ -7,7 +7,7 @@ */ import path from 'path'; -import {exec} from './utils.mjs'; +import {exec} from './utils.mts'; /** Branded string representing a resolved Bazel benchmark target. */ export type ResolvedTarget = string & { diff --git a/scripts/build/angular-in-memory-web-api.mts b/scripts/build/angular-in-memory-web-api.mts index b081bce017e..1a524f8e7bf 100644 --- a/scripts/build/angular-in-memory-web-api.mts +++ b/scripts/build/angular-in-memory-web-api.mts @@ -8,7 +8,7 @@ import {join} from 'path'; -import {bazelCmd, exec} from './package-builder.mjs'; +import {bazelCmd, exec} from './package-builder.mts'; /** * Build the `angular-in-memory-web-api` npm package and copies it into the release diff --git a/scripts/build/build-packages-dist.mts b/scripts/build/build-packages-dist.mts index 5ff77275a09..cb459d93b0e 100755 --- a/scripts/build/build-packages-dist.mts +++ b/scripts/build/build-packages-dist.mts @@ -8,9 +8,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import {buildAngularInMemoryWebApiPackage} from './angular-in-memory-web-api.mjs'; -import {performDefaultSnapshotBuild} from './package-builder.mjs'; -import {buildZoneJsPackage} from './zone-js-builder.mjs'; +import {buildAngularInMemoryWebApiPackage} from './angular-in-memory-web-api.mts'; +import {performDefaultSnapshotBuild} from './package-builder.mts'; +import {buildZoneJsPackage} from './zone-js-builder.mts'; // Build the legacy (view engine) npm packages into `dist/packages-dist/`. performDefaultSnapshotBuild(); diff --git a/scripts/build/package-builder.mts b/scripts/build/package-builder.mts index 0be893b45b5..8c44428f095 100644 --- a/scripts/build/package-builder.mts +++ b/scripts/build/package-builder.mts @@ -8,7 +8,7 @@ import {execSync} from 'child_process'; import {join, dirname} from 'path'; -import {BuiltPackage} from '@angular/ng-dev'; +import type {BuiltPackage} from '@angular/ng-dev'; import {fileURLToPath} from 'url'; import {existsSync, lstatSync} from 'fs'; diff --git a/scripts/build/zone-js-builder.mts b/scripts/build/zone-js-builder.mts index 37fdd4dc8e2..b48dc162d3e 100644 --- a/scripts/build/zone-js-builder.mts +++ b/scripts/build/zone-js-builder.mts @@ -8,7 +8,7 @@ import {join} from 'path'; -import {bazelCmd, exec} from './package-builder.mjs'; +import {bazelCmd, exec} from './package-builder.mts'; /** * Build the `zone.js` npm package into `dist/bin/packages/zone.js/npm_package/` and copy it to diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 64d59de9c3e..d9d8c0ad832 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -9,6 +9,7 @@ "noEmit": true, "skipLibCheck": true, "downlevelIteration": true, - "esModuleInterop": true + "esModuleInterop": true, + "rewriteRelativeImportExtensions": true } } diff --git a/vscode-ng-language-service/package.json b/vscode-ng-language-service/package.json index ffe26cbf61b..a920c7941de 100644 --- a/vscode-ng-language-service/package.json +++ b/vscode-ng-language-service/package.json @@ -257,7 +257,7 @@ "test:inspect-common": "bazel run --config=debug //vscode-ng-language-service/common/tests:test", "test:inspect-server": "bazel run --config=debug //vscode-ng-language-service/server/src/tests:test", "test:inspect-syntaxes": "bazel run --config=debug //vscode-ng-language-service/syntaxes/test:test", - "release": "tsx --tsconfig=tools/tsconfig.json tools/release.mts" + "release": "node tools/release.mts" }, "dependencies": { "@angular/language-service": "workspace:*", @@ -288,4 +288,4 @@ "url": "https://github.com/angular/angular.git", "directory": "vscode-ng-language-service" } -} \ No newline at end of file +}