feat: support angular@20#292
Conversation
✅ Deploy Preview for plugin-angular-universal-demo ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
|
||
| const serverConfig: ApplicationConfig = { | ||
| providers: [provideServerRendering(), provideServerRoutesConfig(serverRoutes)], | ||
| providers: [provideServerRendering(withRoutes(serverRoutes))], |
There was a problem hiding this comment.
This had to be migrated manually (checked how newly scaffolded project with npx @angular/cli@next new sets things up) as ng update @angular/cli @angular/core --next didn't cover it (initially it resulted in trying to import no longer existing provideServerRoutesConfig function)
There was a problem hiding this comment.
Should this be called out somewhere that shows up in release notes? This might be relevant to folks upgrading, is that right?
There was a problem hiding this comment.
We can also ask the Angular team if this is expected to not be handled
There was a problem hiding this comment.
I'll check if migration handles that now (this comment was done very early on before there was any rc yet, so maybe something changed) but if it didn't change I'll check with Angular team
There was a problem hiding this comment.
So this still happens (diff is what automatic migration with npx @angular/cli@next update @angular/cli @angular/core --next does):

And I also don't see a mention of it yet on https://next.angular.dev/update-guide?v=19.0-20.0&l=3 so I'll ask about this
There was a problem hiding this comment.
update:
Angular 19.1 "renamed" provideServerRoutesConfig to provideServerRouting (keeping previous one for backward compat) so it was somewhat quirk of us scaffolding / migrating really early on
There is currently migration for renamed one, but not for "original" one and angular/angular-cli#30359 is looking to address this
So this will be handled automatically soon
|
Note - test on Node 18 fail because it's unsupported with Angular 20: Test setup would need adjustment to skip tests using Angular 20 when on not supported Node version to continue testing previous Angular major versions (or maybe drop testing this node version as it's no longer maintained anyway) |
…ffolded projects setup
| matrix: | ||
| os: [ubuntu-latest, macOS-latest, windows-latest] | ||
| node-version: [18.19.0, 20.13.1] | ||
| node-version: [18.19.1, 20.13.1] |
There was a problem hiding this comment.
see https://github.com/netlify/angular-runtime/actions/runs/15134325612/job/42542439173#step:6:1422 - this is just to get rid of that warning for pre-angular-20 fixtures (it requires adjustment to required checks)
|
|
||
| const serverConfig: ApplicationConfig = { | ||
| providers: [provideServerRendering(), provideServerRoutesConfig(serverRoutes)], | ||
| providers: [provideServerRendering(withRoutes(serverRoutes))], |
There was a problem hiding this comment.
Should this be called out somewhere that shows up in release notes? This might be relevant to folks upgrading, is that right?
|
|
||
| const serverConfig: ApplicationConfig = { | ||
| providers: [provideServerRendering(), provideServerRoutesConfig(serverRoutes)], | ||
| providers: [provideServerRendering(withRoutes(serverRoutes))], |
There was a problem hiding this comment.
We can also ask the Angular team if this is expected to not be handled
| let { outputPath } = workspaceType === 'nx' ? project.targets.build.options : project.architect.build.options | ||
|
|
||
| if (!outputPath && workspaceType === 'default') { | ||
| // outputPath might not be explicitly defined in angular.json | ||
| // so we will try default which is dist/<project-name> | ||
| outputPath = join('dist', projectName) | ||
| } | ||
|
|
||
| const isApplicationBuilder = | ||
| workspaceType === 'nx' | ||
| ? project.targets.build.executor.endsWith(':application') | ||
| : project.architect.build.builder.endsWith(':application') |
There was a problem hiding this comment.
nit: do project.targets.build and project.architect.build have the exact same shape? if so, we could do the nx check only one and hold the build object in a variable
There was a problem hiding this comment.
They don't: build.executor vs build.builder in here.
This code was overall already there before this PR when it was introduced in https://github.com/netlify/angular-runtime/pull/263/files#diff-76ddf06bdc3bb03e611fc684812e5455f0c7bc846aae658cc44f8785a747f6ecL12-R24 - I just moved it because extracting projectName needed for fallback case was messy otherwise
|
angular/angular-cli@d06ff3f there will be bump of min node from 20.11 to 20.19 released soon so adjusting checks / node version for test runner in 9463872 |
* test: upgrade demo to 20-next * chore(demo): ensure min supported node version * chore: manual migration of app.config.server.ts * chore: bump * chore: bump to rc.0 * chore: bump to newest rc * test: add 20-rc fixtures * fix: add angular-20 server.ts signature * fix: handle case of outputPath not being explicitly defined * chore: remove outputPath from demo's angular.json to follow newly scaffolded projects setup * fix: nx handling * test: install new fixtures deps * chore: skip angular@20 on not supported node versions * chore: bump node18 version a bit to match node18 compatible angular min node version * chore: add node22 to test matrix * chore: don't suggest common engine for Angular 20 * docs: refresh readme for Angular 20 * chore: bump min to 20.19 * fix: add link to repo readme for more details * chore: upgrade demo and recreate angular-20 fixtures using most recent versions * chore: sync lock files
Adjustments for Angular@20:
outputPathwhich we rely on, so this adds default fallback for this case (dist/<project-name>) to make it as easy as possible to use Angular@20 on Netlify