diff --git a/.github/shared-actions/windows-bazel-test/action.yml b/.github/shared-actions/windows-bazel-test/action.yml
index baa3e458505a..5f4de58a153e 100644
--- a/.github/shared-actions/windows-bazel-test/action.yml
+++ b/.github/shared-actions/windows-bazel-test/action.yml
@@ -18,7 +18,7 @@ runs:
steps:
- name: Initialize WSL
id: init_wsl
- uses: angular/dev-infra/github-actions/setup-wsl@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/setup-wsl@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
wsl_firewall_interface: 'vEthernet (WSL (Hyper-V firewall))'
diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml
index 31a0ec991eca..b4cea7c321e4 100644
--- a/.github/workflows/assistant-to-the-branch-manager.yml
+++ b/.github/workflows/assistant-to-the-branch-manager.yml
@@ -16,6 +16,6 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- - uses: angular/dev-infra/github-actions/branch-manager@6f44591738d6f0374148fffc723788c62e5cb775
+ - uses: angular/dev-infra/github-actions/branch-manager@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3689040d58ba..4c1da241d6dc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -21,9 +21,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Generate JSON schema types
@@ -44,11 +44,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
@@ -61,11 +61,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
@@ -87,13 +87,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -110,11 +110,11 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
allow_windows_rbe: true
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
@@ -138,13 +138,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -163,13 +163,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run CLI E2E tests
@@ -183,13 +183,13 @@ jobs:
SAUCE_TUNNEL_IDENTIFIER: angular-cli-${{ github.workflow }}-${{ github.run_number }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Run E2E Browser tests
@@ -219,11 +219,11 @@ jobs:
CIRCLE_BRANCH: ${{ github.ref_name }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- run: pnpm admin snapshots --verbose
env:
SNAPSHOT_BUILDS_GITHUB_TOKEN: ${{ secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN }}
diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml
index 7f5b0b413c2c..492ce043519b 100644
--- a/.github/workflows/dev-infra.yml
+++ b/.github/workflows/dev-infra.yml
@@ -20,6 +20,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - uses: angular/dev-infra/github-actions/post-approval-changes@6f44591738d6f0374148fffc723788c62e5cb775
+ - uses: angular/dev-infra/github-actions/post-approval-changes@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml
index 1e239842801c..ed7cd4860d72 100644
--- a/.github/workflows/feature-requests.yml
+++ b/.github/workflows/feature-requests.yml
@@ -16,6 +16,6 @@ jobs:
if: github.repository == 'angular/angular-cli'
runs-on: ubuntu-latest
steps:
- - uses: angular/dev-infra/github-actions/feature-request@6f44591738d6f0374148fffc723788c62e5cb775
+ - uses: angular/dev-infra/github-actions/feature-request@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml
index 528cae69fc20..a763a0848c49 100644
--- a/.github/workflows/perf.yml
+++ b/.github/workflows/perf.yml
@@ -23,7 +23,7 @@ jobs:
workflows: ${{ steps.workflows.outputs.workflows }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- id: workflows
@@ -38,9 +38,9 @@ jobs:
workflow: ${{ fromJSON(needs.list.outputs.workflows) }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
# We utilize the google-github-actions/auth action to allow us to get an active credential using workflow
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 84f8efa21c34..504ac1010ab4 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -34,9 +34,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup ESLint Caching
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
@@ -56,7 +56,7 @@ jobs:
- name: Run Validation
run: pnpm admin validate
- name: Check Package Licenses
- uses: angular/dev-infra/github-actions/linting/licenses@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/linting/licenses@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Check tooling setup
run: pnpm check-tooling-setup
- name: Check commit message
@@ -72,11 +72,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Build release targets
@@ -90,14 +90,14 @@ jobs:
test:
needs: build
- runs-on: ubuntu-latest
+ runs-on: ubuntu-latest-16core
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run module and package tests
@@ -117,13 +117,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }}
@@ -132,11 +132,11 @@ jobs:
runs-on: windows-2025
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
with:
allow_windows_rbe: true
- name: Run CLI E2E tests
@@ -157,13 +157,13 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }}
@@ -180,12 +180,12 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Initialize environment
- uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
- uses: angular/dev-infra/github-actions/bazel/setup@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Setup Bazel RBE
- uses: angular/dev-infra/github-actions/bazel/configure-remote@6f44591738d6f0374148fffc723788c62e5cb775
+ uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f
- name: Run CLI E2E tests
run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 80c0e6ef7771..edb99af6152a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,24 @@
+
+
+# 20.0.3 (2025-06-18)
+
+### @schematics/angular
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- |
+| [e90a808c0](https://github.com/angular/angular-cli/commit/e90a808c0100beb319bae36ca3b771ee2da89435) | fix | include `main.server.ts` in `tsconfig.files` when present |
+| [5c48b8e0a](https://github.com/angular/angular-cli/commit/5c48b8e0ac38a108740ebb290dc1e666ce390806) | fix | reset module `typeSeparator` when generating applications |
+
+### @angular/build
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- |
+| [56f426e25](https://github.com/angular/angular-cli/commit/56f426e2548b86c00d4da19b9f7b5cf97dc79104) | fix | include custom bundle name scripts with karma |
+| [dfe3a8b73](https://github.com/angular/angular-cli/commit/dfe3a8b7342dd492e42ec48052612255ba76c09b) | fix | increase worker idle timeout |
+| [e6d27bd5e](https://github.com/angular/angular-cli/commit/e6d27bd5e3fe64f597621e0d5c08060cea64a302) | fix | set scripts option output as classic script for karma |
+
+
+
# 20.0.2 (2025-06-11)
diff --git a/package.json b/package.json
index b5190c6e0a7a..34b7ca0f9a07 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/devkit-repo",
- "version": "20.0.2",
+ "version": "20.0.3",
"private": true,
"description": "Software Development Kit for Angular",
"keywords": [
diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts
index 55a10b37c54e..d33469a45ef6 100644
--- a/packages/angular/build/src/builders/karma/application_builder.ts
+++ b/packages/angular/build/src/builders/karma/application_builder.ts
@@ -119,6 +119,7 @@ class AngularPolyfillsPlugin {
static createPlugin(
polyfillsFile: FilePattern,
jasmineCleanupFiles: FilePattern,
+ scriptsFiles: FilePattern[],
): InlinePluginDef {
return {
// This has to be a "reporter" because reporters run _after_ frameworks
@@ -166,6 +167,9 @@ class AngularPolyfillsPlugin {
}
}
+ // Add "scripts" option files as classic scripts
+ files.unshift(...scriptsFiles);
+
// Add browser sourcemap support as a classic script
files.unshift({
pattern: localResolve('source-map-support/browser-source-map-support.js'),
@@ -488,17 +492,28 @@ async function initializeApplication(
karmaOptions.basePath = outputPath;
- karmaOptions.files ??= [];
+ const scriptsFiles: FilePattern[] = [];
if (options.scripts?.length) {
- // This should be more granular to support named bundles.
- // However, it replicates the behavior of the Karma Webpack-based builder.
- karmaOptions.files.push({
- pattern: `scripts.js`,
- watched: false,
- type: 'js',
- });
+ const outputScripts = new Set();
+ for (const scriptEntry of options.scripts) {
+ const outputName =
+ typeof scriptEntry === 'string'
+ ? 'scripts.js'
+ : `${scriptEntry.bundleName ?? 'scripts'}.js`;
+
+ if (outputScripts.has(outputName)) {
+ continue;
+ }
+ outputScripts.add(outputName);
+ scriptsFiles.push({
+ pattern: `${outputPath}/${outputName}`,
+ watched: false,
+ type: 'js',
+ });
+ }
}
+ karmaOptions.files ??= [];
karmaOptions.files.push(
// Serve global setup script.
{ pattern: `${mainName}.js`, type: 'module', watched: false },
@@ -572,7 +587,7 @@ async function initializeApplication(
parsedKarmaConfig.middleware.push(AngularAssetsMiddleware.NAME);
parsedKarmaConfig.plugins.push(
- AngularPolyfillsPlugin.createPlugin(polyfillsFile, jasmineCleanupFiles),
+ AngularPolyfillsPlugin.createPlugin(polyfillsFile, jasmineCleanupFiles, scriptsFiles),
);
parsedKarmaConfig.reporters ??= [];
parsedKarmaConfig.reporters.push(AngularPolyfillsPlugin.NAME);
diff --git a/packages/angular/build/src/utils/worker-pool.ts b/packages/angular/build/src/utils/worker-pool.ts
index 3a4b3def27cb..61f7b0ff7b59 100644
--- a/packages/angular/build/src/utils/worker-pool.ts
+++ b/packages/angular/build/src/utils/worker-pool.ts
@@ -15,7 +15,8 @@ export class WorkerPool extends Piscina {
constructor(options: WorkerPoolOptions) {
const piscinaOptions: WorkerPoolOptions = {
minThreads: 1,
- idleTimeout: 1000,
+ // Workaround for https://github.com/piscinajs/piscina/issues/816
+ idleTimeout: 10_000,
// Web containers do not support transferable objects with receiveOnMessagePort which
// is used when the Atomics based wait loop is enable.
atomics: process.versions.webcontainer ? 'disabled' : 'sync',
diff --git a/packages/angular/ssr/test/BUILD.bazel b/packages/angular/ssr/test/BUILD.bazel
index c81599b43a79..d18700a662ad 100644
--- a/packages/angular/ssr/test/BUILD.bazel
+++ b/packages/angular/ssr/test/BUILD.bazel
@@ -32,4 +32,5 @@ jasmine_test(
data = [
":esm_tests_bundled",
],
+ flaky = True,
)
diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts
index ce8c83b2871f..f9254fe0f3e6 100644
--- a/packages/schematics/angular/application/index.ts
+++ b/packages/schematics/angular/application/index.ts
@@ -69,6 +69,7 @@ export default function (options: ApplicationOptions): Rule {
routingScope: 'Root',
path: sourceDir,
project: options.name,
+ typeSeparator: undefined,
}),
schematic('component', {
name: 'app',
diff --git a/packages/schematics/angular/server/index.ts b/packages/schematics/angular/server/index.ts
index 50f624e078cd..484a8f03a4ab 100644
--- a/packages/schematics/angular/server/index.ts
+++ b/packages/schematics/angular/server/index.ts
@@ -119,6 +119,14 @@ function updateConfigFileApplicationBuilder(options: ServerOptions): Rule {
function updateTsConfigFile(tsConfigPath: string): Rule {
return (host: Tree) => {
const json = new JSONFile(host, tsConfigPath);
+ // Skip adding the files entry if the server entry would already be included.
+ const include = json.get(['include']);
+ if (!Array.isArray(include) || !include.includes('src/**/*.ts')) {
+ const filesPath = ['files'];
+ const files = new Set((json.get(filesPath) as string[] | undefined) ?? []);
+ files.add('src/' + serverMainEntryName);
+ json.modify(filesPath, [...files]);
+ }
const typePath = ['compilerOptions', 'types'];
const types = new Set((json.get(typePath) as string[] | undefined) ?? []);