Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: 2 guides on modernizing apps: for apps migrated to 2211.19 and for apps migrated to Feb 2025 release #19924

Draft
wants to merge 67 commits into
base: develop
Choose a base branch
from

Conversation

Platonn
Copy link
Contributor

@Platonn Platonn commented Jan 23, 2025

Changes in the PR:

  • This PR adds 2 guides:
    1. for apps migrated to Spa 2211.19 (ng17) in the past - so they are modernized and mimic a new ng17 apps
    2. for apps migrated to Spa 2211.35 (ng19) - so they are modernized and mimic a new ng19 apps
  • Moreover this PR adjusts the main migration guide for 2211.35 (ng19), so it mentions the 2 introduced other guides - the first as a prerequisite and the second as a follow-up (to be prepared better for future next migrations).
  • by the way, this PR fixes also an unrelated small glitch in the Bootstrap migration guide

Why 2 new guides are needed:

  • Apps migrated from ng15 to ng17 are configured very differently than apps created initially in ng17.
    Analogically, apps migrated from ng17 to ng19 are configured a bit differently than apps created initially in ng19. And unfortunately the old configuration is a tech dept that prevents customers from benefiting from some new Angular's features (e.g. faster app builds) and this dept is makes also next future migrations of Angular and Spartacus more complex.
  • To be future-proof and to make future next migrations easier, we should help all customers' apps not only to be migrated but also be modernized to use the same new configuration and look like new ng19 apps. This helps both customers and the Spartacus team:
    • customers apps are as modern as possible and easier to migrate to the future versions of Angular and benefit from new Angular's features
    • Spartacus team can spend less time on preparing migrations, because they doesn't need to test scenarios of migrating different apps differently (i.e. apps having different level of legacy configuration):
      1. new ng19 app
      2. ng17 app migrated to ng19 but not modernized - with legacy config
      3. ng15 app migrated to ng17 but not modernized, and then migrated to ng19 but not modernized even more - with double legacy config

fixes https://jira.tools.sap/browse/CXSPA-9217

pawelfras and others added 30 commits December 12, 2024 12:54
- ran `npx nx migrate latest` (bump most of libraries to the latest version) and `npx nx migrate --run-migration` (run packages' migration, all except angular's migration from initializer tokens to helper functions)
- bump '@angular/animations' to version '^19.0.3'
- bump '@angular/common' to version '^19.0.3'
- bump '@angular/compiler' to version '^19.0.3'
- bump '@angular/core' to version '^19.0.3'
- bump '@angular/forms' to version '^19.0.3'
- bump '@angular/platform-browser' to version '^19.0.3'
- bump '@angular/platform-browser-dynamic' to version '^19.0.3'
- bump '@angular/platform-server' to version '^19.0.3'
- bump '@angular/pwa' to version '^19.0.4'
- bump '@angular/router' to version '^19.0.3'
- bump '@angular/service-worker' to version '^19.0.3'
- bump '@angular/ssr' to version '^19.0.4'
- bump '@ng-select/ng-select' to version '^14.1.0'
- bump 'angular-oauth2-oidc' to version '19.0.0'
- bump 'ngx-infinite-scroll' to version '^19.0.0'
- bump 'zone.js' to version '0.15.0'
- bump '@angular-devkit/build-angular' to version '^19.0.4'
- bump '@angular-devkit/core' to version '^19.0.4'
- bump '@angular-devkit/schematics' to version '^19.0.4'
- bump '@angular-eslint/builder' to version '19.0.2'
- bump '@angular-eslint/eslint-plugin' to version '^19.0.2'
- bump '@angular-eslint/eslint-plugin-template' to version '^19.0.2'
- bump '@angular-eslint/schematics' to version '^19.0.2'
- bump '@angular-eslint/template-parser' to version '^19.0.2'
- bump '@angular-eslint/test-utils' to version '^19.0.2'
- bump '@angular-eslint/utils' to version '^19.0.2'
- bump '@angular/cli' to version '^19.0.4'
- bump '@angular/compiler-cli' to version '^19.0.3'
- bump '@angular/language-service' to version '^19.0.3'
- bump '@nx/angular' to version '^20.2.2'
- bump '@nx/devkit' to version '^20.2.2'
- bump '@nx/eslint-plugin' to version '^20.2.2'
- bump '@nx/jest' to version '^20.2.2'
- bump '@nx/workspace' to version '^20.2.2'
- bump '@schematics/angular' to version '^19.0.4'
- bump 'jest-preset-angular' to version '14.4.2'
- bump 'ng-packagr' to version '^19.0.1'
- bump 'nx' to version '^20.2.2'
- bump 'typescript' to version '^5.6.3'
- add `standalone: false` to all components, directives and pipes
  for more, see: angular/angular#57643
- add rule `"@angular-eslint/prefer-standalone": "off"` in eslint files
- remove deprecated `"angular-eslint/no-host-metadata-property"`
  for more, see: angular-eslint/angular-eslint#2113
- update '@angular/ssr' import paths to use the new '/node' entry point when 'CommonEngine' is detected
  for more, see: angular/angular-cli#28278
- change range specifier for typescript library to meet Angular's requirement (>=5.5.0 and <5.7.0)
- fix building libs and CSR by solvig type errors provided with TS 5.6
- this update is required for SSR to work, because previous version use Angualr 18 API which is no longer part of @angular/core in v19.
  for more, see: angular/angular#58891
- fix type issues
- use `takeUntil` with destroy subject in `trending-searches.service.ts` as a more reliable cleanup method to properly handle cleanup
- remove redundant 'declatartion: true' from 'tsconfig.schematics.json' files,
  that caused issues in unit tests due to type errors in '@schematics/angular' library
  'Buffer is not a generic type'. The issue appeared because '*.d.ts' files are taken into consideration when running tests, maybe unnecessary
  for more, see: https://github.com/angular/angular-cli/blob/4db4dd4315fd8c31872bbf1e82e3414eea15ffef/goldens/public-api/angular_devkit/schematics/index.api.md\?plain\=1\#L498
- update snapshots with new budget thresholds
  for more, see: angular/angular-cli#28255
- update snapshots with new packages versions
- update schematics and related tests with the new `server.ts` location
  for more, see: angular/angular-cli#28571
- adjust positions in utils tests to reflect the `standalone: false` in component decorators
- adjust SSR schematics to remove `withEventReplay()` that Angular installs by default
  for more, see:
- refactor tests for 2211.19 SSR migration to make them independent of Angular's schematics
  for more, see: angular/angular-cli#28469
- move `@angular-eslint/prefer-standalone` to global eslint rules
- add missing `OnDestroy` implementation in cds library
- remove `@angular-eslint/no-host-metadata-property` from the config as it is no longer part of the package
 for more, see: angular-eslint/angular-eslint#2113
- add missing comma to all files where 'standalone: false' was added
- upgrade to version that supports TS >= 5.6.3
- add `@typescript-eslint/rule-tester` which was missing peer dependency of `@angular-eslint/test-utils`
- adjust import-utils.ts to meet new typing
- bump `@ngrx/*` libraries to `19.0.0`
- adjust failing unit tests to satisfy types
- update snapshots
- adjust ssr/engine tests to use new required `standalone: false`
- adjust jest config for `setup/ssr` unit tests to use `beasties` from node modules instead of the internalized one provided with `@angular/ssr` due to issues with not supported ES format
….server.html`

- adjust server file
- update snapshot
- update docs with information about changing path to the index file to be in line with the builder's output
This reverts commit 3fb0b3a.
This reverts commit c304b34.
- extend supported version of typescript for compatibility with new Angular versions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants