Dependencies naar de nieuwste versies + update-check in de testsuite
Upgrades
- Frontend: React 19.2, Vite 8.2, @vitejs/plugin-react 6.1, ESLint 9.39
- Backend: Express 5.2, Helmet 8.3, express-rate-limit 8.7, pino 10.3,
pino-http 11, pg 8.23, dotenv 17.4, bcryptjs 3.0, ESLint 10.9
- Lockfiles opnieuw gegenereerd (backend had er geen)
Breaking changes opgevangen
- Express 5 laat kale wildcards in routes niet toe: app.use("/api/*") is een
prefix-mount geworden en app.get("*") pad-loze middleware
- Vite 8 bundelt met Rolldown, dat de object-vorm van manualChunks niet kent;
omgezet naar build.rollupOptions.output.advancedChunks
- Rate-limit headers verschillen per RFC-draft; de test kijkt nu naar de hele
RateLimit-headerfamilie in plaats van naar RateLimit-Limit
- ESLint blijft in de frontend op 9: eslint-plugin-react ondersteunt nog geen
ESLint 10 (peer <= ^9.7)
Update-check bij het testen
- docker/check-updates.mjs vergelijkt beide package.json's met het
npm-register; werkt zonder node_modules en zonder npm install
- test.ps1 draait dit als stap 1 van 4, met -Strict (falen) en -SkipDeps
(offline). Ook informatief in de Test-stage van de pipeline
- Bewuste uitzonderingen met reden in docker/update-exceptions.json
- dev.ps1 up gebruikt --renew-anon-volumes, anders houdt de dev-container de
oude node_modules na een upgrade
Overig
- ESLint flat configs voor beide packages; npm run lint werkte niet omdat er
geen configuratie was. Beide draaien nu groen (alleen waarschuwingen over
bestaande ongebruikte variabelen)
- README.md, BEHEER.md en Changelog.md bijgewerkt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bfec3a25f3
commit
1c0eed61f6
@@ -37,25 +37,43 @@ Vite proxyt `/api` naar `localhost:3001` binnen dezelfde container.
|
||||
## Testen
|
||||
|
||||
```powershell
|
||||
.\test.ps1 # backend-tests + productiebuild + smoketest
|
||||
.\test.ps1 -Unit # alleen de backend-tests
|
||||
.\test.ps1 -NoSmoke # tests + build, zonder de stack te starten
|
||||
.\test.ps1 # dependency-check + backend-tests + build + smoketest
|
||||
.\test.ps1 -Unit # dependency-check + backend-tests
|
||||
.\test.ps1 -NoSmoke # zonder de stack te starten
|
||||
.\test.ps1 -Strict # faal als een dependency achterloopt
|
||||
.\test.ps1 -SkipDeps # dependency-check overslaan (bijv. offline)
|
||||
```
|
||||
|
||||
Alles loopt in Docker; Node op de host is niet nodig.
|
||||
|
||||
| Stap | Wat er gebeurt |
|
||||
|---|---|
|
||||
| Dependency-check | `docker/check-updates.mjs` vergelijkt `package.json` met het npm-register |
|
||||
| Backend-tests | `Dockerfile` target `test` → `node --test` in `backend/test/`, zonder database |
|
||||
| Productiebuild | `Dockerfile` target `production` — faalt de Vite-build, faalt deze stap |
|
||||
| Smoketest | app + postgres starten en `/api/health` en `/` opvragen |
|
||||
|
||||
Losse backend-tests draaien in een lopende dev-container:
|
||||
De dependency-check draait standaard bij elke testronde, dus je ziet direct of
|
||||
er updates open staan. Pakketten die bewust achterblijven zet je met een reden
|
||||
in `docker/update-exceptions.json`; die worden als `[vast ]` gemeld en laten de
|
||||
check niet falen. Zonder netwerk: `-SkipDeps`. In een CI-gate: `-Strict`.
|
||||
|
||||
De check los draaien:
|
||||
|
||||
```bash
|
||||
docker run --rm -v ${PWD}:/repo -w /repo node:22-alpine node docker/check-updates.mjs
|
||||
docker run --rm -v ${PWD}:/repo -w /repo node:22-alpine node docker/check-updates.mjs --strict
|
||||
```
|
||||
|
||||
Losse backend-tests en linting in een lopende dev-container:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yml exec app npm test
|
||||
docker compose -f docker-compose.dev.yml exec app npm run lint
|
||||
docker compose -f docker-compose.dev.yml exec -w /app/frontend app npm run lint
|
||||
```
|
||||
|
||||
---
|
||||
---
|
||||
|
||||
## Release workflow
|
||||
@@ -224,6 +242,41 @@ Rollen:
|
||||
|
||||
---
|
||||
|
||||
## Dependencies bijwerken
|
||||
|
||||
Node hoeft niet op de host te staan; de lockfiles zijn met een container bij te
|
||||
werken. Per map (`frontend` en `backend`):
|
||||
|
||||
```bash
|
||||
# Laatste versies opzoeken
|
||||
docker run --rm -v ${PWD}/frontend:/w -w /w node:22-alpine npm outdated
|
||||
|
||||
# Versies in package.json aanpassen, daarna de lockfile herschrijven
|
||||
docker run --rm -v ${PWD}/frontend:/w -w /w node:22-alpine npm install --package-lock-only
|
||||
```
|
||||
|
||||
Daarna altijd de testsuite draaien — die bouwt ook het productie-image, dus een
|
||||
kapotte upgrade valt meteen op:
|
||||
|
||||
```powershell
|
||||
.\test.ps1
|
||||
```
|
||||
|
||||
En de dev-stack herbouwen. `node_modules` staan in anonieme volumes; zonder
|
||||
`--renew-anon-volumes` blijven de oude versies staan. `.\dev.ps1 up` doet dit
|
||||
al automatisch:
|
||||
|
||||
```powershell
|
||||
.\dev.ps1 up
|
||||
```
|
||||
|
||||
> Let op bij majors: `eslint-plugin-react` loopt achter op ESLint (peer
|
||||
> `<= ^9.7`), daarom staat de frontend op ESLint 9 en de backend op 10.
|
||||
> Express 5 vereist benoemde wildcards in routes (`/api/*splat`); `server.js`
|
||||
> gebruikt daarom pad-loze middleware in plaats van `app.get("*")`.
|
||||
|
||||
---
|
||||
|
||||
## Registry
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user