Ga naar hoofdinhoud

Dependencies update procedure

Dependency updates doen we bij voorkeur aan het begin van een sprint zodat we de nieuwe versies zelf kunnen ervaren. Dit sluit bevindingen van afnemers natuurlijk niet uit.

TypeScript-versiebeleid

Bij het updaten van TypeScript houden we rekening met de versies die ondersteund worden door Stencil, Storybook en Angular:

  • Stencil ondersteunt momenteel TypeScript tot en met versie 5.8.3 (Stencil v4.43.3). Echter draait versie v4.43.3 ook goed met typescript 5.9.3.
  • Storybook (v10) draait officieel op TypeScript 4.9, maar is compatibel met hogere versies.
  • Angular (v21.2.6) ondersteunt TypeScript >=5.8.0 <6.0.0

Stencil loopt traditioneel achter op de laatste TypeScript-releases. Houd bij toekomstige updates daarom altijd rekening met de maximale ondersteunde TypeScript-versie van Stencil. Voer een check uit op:

Pas de TypeScript-versie dus alleen aan als alle gebruikte tools deze ondersteunen, óf als de build én ontwikkelervaring (IDE) geen fouten opleveren.

pnpm update

Installeer de nieuwste pnpm.

corepack install --global pnpm@latest

Pas daarna de versie in het packageManager-veld in de root package.json aan. De Dockerfile gebruikt corepack, die de versie automatisch uit dit veld leest, dus die hoeft niet apart aangepast te worden.

Dependencies update

Niet elke dependency maakt gebruik van SemVer, in het bijzonder sass. Elke breaking release behoeft onderzoek. Kijk naar GitHub releases, CHANGELOG, blogposts, etc.

Angular en Storybook hebben een eigen update procedure. Prettier, Stylelint en ESLint updaten we in een eigen issue.

De dependencies typescript en tslib moeten voor alle packages onderling identiek zijn. Hetzelfde geldt voor de Angular en Storybook dependencies.

pnpm update --interactive --recursive --latest
pnpm dedupe --check # zonder --check als nodig

Sass

Herstructuring van de output dso.css kan voorkomen na het updaten van Sass. Maak een vergelijking met de dso.css van master en met de dso.css van topic branch om te zien of de wijzigingen kloppen.

Danger.yml

In .github/workflows/danger.yml de packages TypeScript en Danger meenemen.

Node / Cypress

Let op de Docker base image in de Dockerfile.

Compatibiliteit Azure CLI

Azure CLI ondersteunt momenteel alleen Debian 11 (Bullseye) en Debian 12 (Bookworm). Debian 13 (Trixie) wordt nog niet ondersteund (We gebruiken Bookworm in plaats van Trixie).

Notitie:

Bij elke nieuwe major versie van Node moet ook de README.md worden aangepast zodat de juiste Node-versie wordt gecommuniceerd naar gebruikers en ontwikkelaars.

Azcopy

Controleer op https://github.com/Azure/azure-storage-azcopy/releases of er een nieuwe release is voor azcopy. Pas indien nodig in de Dockerfile de link naar de tar.gz-file aan met het versienummer (bijv. 10.26.0) en de datum van de release (bijv. 20240731). https://azcopyvnext.azureedge.net/releases/release-<versienummer>-<releasedatum>/azcopy_linux_amd64_<versienummer>.tar.gz en controleer dat de link de juiste file download.

Storybook

In /storybook:

pnpm dlx storybook@latest upgrade

In /packages/react:

pnpm dlx storybook@latest upgrade

In /angular-workspace:

pnpm dlx storybook@latest upgrade

Doorzoek alle package.json in de repository op de oude versie van Storybook, er zijn meer @storybook/ packages die buiten een Storybook installatie worden gebruikt. Let erop dat alle Storybook packages exact dezelfde versie hebben.

Daarna weer dedupe:

pnpm dedupe --check # zonder --check als nodig

Angular

Het update proces is een handmatige handeling waarbij een beetje met pnpm --filter angular-workspace ng update @angular/cli @angular/core wordt gedaan en versie nummers updaten (handmatig of met pnpm update --interactive --recursive).

Als er een major release zijn er mogelijk migrations zijn:

ng update @angular/cli --from 10 --to 11 --migrate-only

Zie ook https://update.angular.io/

Sub dependencies update

pnpm update --recursive

En dedupe:

pnpm dedupe --check # zonder --check als nodig

Afronden

  • Volledige lokale build: lint, build, build-www en e2e.
  • Aanbieden als PR.
  • Nieuw issue aanmaken voor volgende dependency update.