16340 Commits

Author SHA1 Message Date
Alan Agius
86d241629f fix(@schematics/angular): add @angular/ssr dependency only when provideServerRendering import has been updated
Prior to this commit, the dependency was always added.
2025-03-18 22:03:13 +01:00
Charles Lyding
b66d36b4b0 build: move @angular/build specific dependencies out of root
With the migration to `rules_js`, package specific dependencies now only
need to be referenced with the source `package.json` for each specific
package. Most of the `@angular/build` specific dependencies have now been
moved. This is not exhaustive and further changes will continue to move
additional dependencies.
2025-03-18 13:01:26 -04:00
Alan Agius
26fd4ea73a feat(@schematics/angular): add migrations for server rendering updates
- Migrate imports of `provideServerRendering` from `@angular/platform-server` to `@angular/ssr`.
- Update `provideServerRendering` to use `withRoutes` and remove `provideServerRouting` from `@angular/ssr`.
2025-03-18 17:58:59 +01:00
Alan Agius
33b9de3eb1 feat(@angular/ssr): expose provideServerRendering and remove provideServerRouting
This commit introduces `provideServerRendering` as the primary function for configuring server-side rendering, replacing `provideServerRouting`. `provideServerRendering` now includes the functionality of `provideServerRouting` through the use of the `withRoutes` feature.

This change consolidates server-side rendering configuration into a single, more flexible function, aligning with the evolution of Angular SSR.

**Before:**
```ts
import { provideServerRouting } from '@angular/ssr';
import { serverRoutes } from './app.routes';

provideServerRouting(serverRoutes);
```

**After:**
```ts
import { provideServerRendering, withRoutes } from '@angular/ssr';
import { serverRoutes } from './app.routes';

provideServerRendering(withRoutes(serverRoutes));
```
2025-03-18 17:58:59 +01:00
Paul Gschwendtner
fe69a9b23a build: improve debugging mode of e2e test runner
Currently the `while` loop may either be causing the process to be
really stuck/hanging, or it somehow causes Node to exit.

This change makes the logic more robust and less CPU consuming.
2025-03-18 14:52:40 +01:00
Charles Lyding
bc0f07b484 fix(@schematics/angular): generate services without a .service extension/type
To align with the updated style guide, Angular v20 will generate services
without a `.service` file extension type for all service related
files by default. Projects will automatically use this naming convention.
Projects can however opt-out by setting the `type` option to `Service`
for the service schematic. This can be done as a default in the `angular.json`
or directly on the commandline via `--type=Service` when executing `ng generate`.
As an example, `example.service.ts` will now be named `example.ts`. Additionally,
the TypeScript class name will be `Example` instead of the previous `ExampleService`.
2025-03-18 07:25:46 -04:00
Charles Lyding
e7ae25a76b refactor(@schematics/angular): remove unneeded initial library service generation
The `library` schematic will now longer generate an empty Angular service
with the name of the library. Using only the name would generate a file
name conflict with the component now that the type suffix is no longer
used by default. Additionally, services tend to be specific to a particular
behavior and/or functionality and are named as such. A generically named
empty service will typically be deleted or renamed.
2025-03-18 07:25:46 -04:00
Charles Lyding
e07491e80e build: move devkit core specific dependencies out of root
With the migration to `rules_js`, package specific dependencies now only
need to be referenced with the source `package.json` for each specific
package. Most of the `@angular-devkit/core` specific dependencies have now been
moved. This is not exhaustive and further changes will continue to move
additional dependencies.
2025-03-17 17:18:58 -04:00
Angular Robot
e774476413 build: lock file maintenance 2025-03-17 12:28:40 -04:00
Angular Robot
6d6e24adb2 build: update all non-major dependencies 2025-03-17 07:38:17 -04:00
Charles Lyding
0948ddebe0 refactor(@angular/cli): import from node:fs/promises where appropriate
Several usages of `import { promises as fs } from 'node:fs'` have been
adjusted to import directly from `node:fs/promises`. This is consistent
with the rest of the source code usage.
2025-03-14 18:19:33 -04:00
Angular Robot
0173c88f50 build: update devinfra digest to 85eab90 2025-03-14 11:28:59 -07:00
Angular Robot
d625332142 build: update dependency vite to v6.2.2 2025-03-14 11:28:33 -07:00
Charles Lyding
ce7a8ec0f2 build: remove unused dependency debug
The `debug` package is unused and has now been removed from the root `package.json`.
2025-03-14 11:28:09 -07:00
Charles Lyding
ea8b3fc564 build: move @angular/cli specific dependencies out of root
With the migration to `rules_js`, package specific dependencies now only
need to be referenced with the source `package.json` for each specific
package. Most of the `@angular/cli` specific dependencies have now been
moved. This is not exhaustive and further changes will continue to move
additional dependencies.
2025-03-14 11:28:09 -07:00
Charles Lyding
23fc8e1e17 fix(@schematics/angular): generate components without a .component extension/type
To align with the updated style guide, Angular v20 will generate components
without a `.component` file extension type for all component related
files by default. Projects will automatically use this naming convention.
Projects can however opt-out by setting the `type` option to `Component`
for the component schematic. This can be done as a default in the `angular.json`
or directly on the commandline via `--type=Component` when executing `ng generate`.
As an example, `app.component.css` will now be named `app.css`. Additionally,
the TypeScript class name will be `App` instead of the previous `AppComponent`.
2025-03-14 11:27:43 -07:00
Charles Lyding
f126f8d34b fix(@schematics/angular): ensure module discovery checks for an NgModule decorator
The Angular module discovery logic previously did not check for the presence
of a potential `@NgModule` decorator. This can cause false positive results
for files with a module-like naming pattern.
2025-03-14 11:27:43 -07:00
Charles Lyding
29a58e5bf7 build: move build-angular/build-webpack specific dependencies out of root
With the migration to `rules_js`, package specific dependencies now only
need to be referenced with the source `package.json` for each specific
package. Most of the `@angular-devkit/build-angular` and `@angular-devkit/build-webpack`
specific dependencies have now been moved. This is not exhaustive and further
changes will continue to move additional dependencies.
2025-03-14 13:18:16 -04:00
Alan Agius
f4be831197 feat(@angular/build): Support Sass package importers
Enhanced Sass integration by adding support for package importers.

See: https://sass-lang.com/blog/announcing-pkg-importers/

Closes: #29854
2025-03-14 16:02:56 +01:00
Alan Agius
27fe5dad62 docs: correct bazel e2e commands
These command are outdated and no longer work
2025-03-14 15:41:15 +01:00
Charles Lyding
318c164d1f refactor(@angular/build): define an internal ngHmrMode value
An `ngHmrMode` boolean value will now be defined within application bundles.
The value is based on the development server's `hmr` option with `true`
when HMR is enabled and `false` when disabled. For all application builds,
the value will be `false`. `ngHmrMode` is similar in behavior to `ngServeMode`
or `ngDevMode`. It will not be present in the output code unless referenced
and in those cases only the final boolean value will be present if not optimized
out of the final code.
The value is not considered part of the public API and may change in the future.
2025-03-13 19:38:14 -04:00
Charles Lyding
f780e8beb3 fix(@angular/build): ensure relative karma stack traces for test failures
The karma configuration will now automatically set the `basePath` option
to the temporary output path when using the application build system's
karma testing. This ensures that only the relative path of the test files
is represented in the stack traces of test failures.
2025-03-13 13:49:55 -04:00
Alan Agius
18e13e2cee feat(@schematics/angular): remove --server-routing option
Server-side rendering (SSR) will always enable server routing when using the application builder.

BREAKING CHANGE: `--server-routing` option has been removed from several schematics. Server routing will be used when using the application builder.
2025-03-13 17:40:26 +01:00
Alan Agius
cdfc50c29a feat(@angular/ssr): stabilize AngularNodeAppEngine, AngularAppEngine, and provideServerRouting APIs
This commit promotes the `AngularNodeAppEngine`, `AngularAppEngine`, and `provideServerRouting` APIs from dev preview to stable. These APIs enhance server-side rendering (SSR) capabilities in Angular applications, improving routing and server integration for better performance and reliability.
2025-03-13 17:40:26 +01:00
Alan Agius
b9591eb4b6 docs(@angular-devkit/build-angular): update forceEsbuild option description
Esbuild builder is stable and is no longer in developer preview.
2025-03-13 14:51:31 +01:00
Alan Agius
09d3ced9f4 docs: release notes for the v17.3.13 release 2025-03-13 13:03:45 +01:00
Alan Agius
ab68a05063 docs: release notes for the v19.2.3 release 2025-03-13 11:34:05 +01:00
Alan Agius
af829b4365 docs: release notes for the v18.2.15 release 2025-03-13 11:09:44 +01:00
Angular Robot
769480e041 build: update dependency aspect_rules_ts to v3.5.1 2025-03-13 10:51:01 +01:00
Paul Gschwendtner
ea920c35e7 release: cut the v20.0.0-next.1 release 20.0.0-next.1 2025-03-13 10:39:40 +01:00
Paul Gschwendtner
32470e6a32 build: update angular 2025-03-13 09:29:35 +01:00
Paul Gschwendtner
54c561af4a build: avoid WSL interop flake when preparing Windows CI environment
For our native Windows tests (verifying `ng` CLI outside WSL), we
currently build the test binaries inside WSL, leveraging bazel remote
execution.

The scripts involved in moving the built binaries to outside WSL rarely
flake due to a WSL interop bug when we invoke Windows commands from inside
WSL (which is an untypical thing to do; but a needed trick given some WSL limitation).

This commit tries to stabilize/avoid this flake by retrying if we
recognize this.
2025-03-13 09:11:26 +01:00
Angular Robot
2d9735d5d2 build: update devinfra digest to 47572ab 2025-03-12 22:46:21 -04:00
Angular Robot
0c720655ea build: update all non-major dependencies 2025-03-12 15:39:24 -04:00
Paul Gschwendtner
3f2e18dd10 docs: release notes for the v19.2.2 release 2025-03-12 18:29:26 +01:00
Charles Lyding
a7db68d2e2 test: remove E2E test for ngrx Effect decorator usage
The `misc/third-party-decorators` E2E test has been
deleted as its purpose was to test the usage of the
now removed `Effect` decorator from `ngrx`.
2025-03-12 13:27:03 -04:00
Alan Agius
79de7e0bda ci: update matchCurrentVersion RegExp
The previous regexp also matches `20.0.0-next` which causes Angular FW packages not to be updated.
2025-03-12 18:23:48 +01:00
Paul Gschwendtner
d35363985c build: update ng-dev
Updates `ng-dev` again as we made another release-tool fix for pnpm.
See: 9fd3adb2e8
2025-03-12 18:23:17 +01:00
Paul Gschwendtner
6136c6a5d2 build: update ng-dev to include latest pnpm release tool fixes
The release tool did check for a `yarn.lock` file. This check was
updated to also work with pnpm.
2025-03-12 17:38:11 +01:00
Paul Gschwendtner
23829b0ed2 docs: improve developer guide for pnpm and windows
Improves the developer guide for pnpm and Windows.

See for the Windows change:
https://github.com/angular/angular-cli/pull/29705.
2025-03-12 12:13:28 +01:00
Charles Lyding
20c64ba8fb build: remove dev-infra @angular/build-tooling package
With the migration to use `rules_js` with Bazel,
this package should no longer be needed.
2025-03-11 13:51:33 -04:00
Alan Agius
ee8466de52 fix(@angular/ssr): prevent stream draining if write does not return a boolean
Implements a workaround for https://github.com/CodeGenieApp/serverless-express/issues/683

Closes #29801
2025-03-11 15:24:54 +01:00
Alan Agius
2d03d8f113 fix(@angular/cli): record analytics for nested schematics
Prior to this commit, analytics were not recorded for nested schematics. This caused certain data to be incomplete. For example, when running `ng new` and selecting "yes" for SSR in the prompt, this choice was not recorded because the prompt exists within the `application` schematic.
2025-03-11 15:24:41 +01:00
Angular Robot
e8958e363b build: lock file maintenance 2025-03-11 15:23:46 +01:00
Alan Agius
5bea3de4cb fix(@angular/build): invalidate com.chrome.devtools.json if project is moved
Ensure that when a project is relocated, the `com.chrome.devtools.json` file is properly invalidated by checking the `root` path.
2025-03-11 15:23:37 +01:00
Alan Agius
5ff4c28e7b build: ensure that tools/legacy-rnjs/node_modules is ignored 2025-03-11 14:17:40 +01:00
Angular Robot
f79ab12b0d build: update all non-major dependencies to v8.26.1 2025-03-11 13:16:38 +01:00
Paul Gschwendtner
9dd3f0344f
Further clean-up rules_nodejs npm workspace and remove yarn.lock (#29779)
* build: disconnect `@npm` workspace from main project

This will speed up significantly as we don't need to fetch all
dependencies again just for the `@npm` repository that is at this point
only leveraged by the `ng_package` rule for some of its dependencies.

This commit allows us to drop the `yarn.lock` and Aspect lock files, and
allows us to independently migrate `ng_package` to `rules_js`.

It also allows us to drop the `_rjs` TS interop layer in follow-up commits.

* build: drop `_rjs` suffix from `ts_project` targets

We don't need the `ts_project` interop in principle
at this point. We only have one remaining instance left for the SSR
`ng_package` integration. This commit cleans up all usages.

* build: remove yarn

* build: avoid duplicated dependencies at top-level

`rules_js` seems to be sensitive if there are similar versions of the same
package installed, but with differently matched peer dependencies. This
is fine because we can (and should long-term) move those dependencies to
their package-local `package.json` files. This commit unblocks the
migration and highlights how we can move deps to the individual packages
in the future.

* build: update checkout github action

This will allow us to use pnpm.

* build: update node to avoid strict-engines error caused by `npm`

Avoids:

```
Lockfile is up to date, resolution step is skipped
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your Node version is incompatible with "npm@11.2.0".

Expected version: ^20.17.0 || >=22.9.0
Got: v20.11.1
```

Note that we won't update the WORKSPACE test version as that would mean
we need to update the Node engines for shipped packages; and we can't do
this right now without introducing a breaking change.

* build: fix missing dependency for spec bundling

The beasties JS sources weren't available for bundling in the
`bazel-bin`, and this surfaced in RBE. This commit fixes this.
2025-03-11 10:05:52 +01:00
Angular Robot
a05d93a3f8 build: update devinfra digest to 04132c6 2025-03-10 10:22:30 -07:00
Angular Robot
9041f6d6a4 build: lock file maintenance 2025-03-10 10:22:16 -07:00