Thema
Registry-only
De belangrijkste architectuurkeuze in de foundation, en de makkelijkste om per ongeluk terug te draaien.
De regel
Harde regel
Voeg nooit een workspaces-veld toe aan een package.json op repo-niveau, en vervang nooit een registry-dependency door file:, link: of een symlink.
Elk van de 35 packages installeert zijn interne afhankelijkheden als tarball uit een npm-registry — precies zoals een project in stage 2 dat doet.
Waarom
Een workspace-symlink test de bron. Een scaffold-project krijgt de tarball. Tussen die twee zit alles wat stil kan misgaan:
- een ontbrekende
exports-subpath - een gat in
files[] - een dependency die alleen via hoisting binnenkwam
Wat het al heeft opgeleverd
webapp-factory@0.1.1 miste de storage-subpath. Maandenlang. Dat kwam pas boven in stem-analyse — ná scaffolden en deployen. Registry-only verplaatst die ontdekking naar de foundation zelf, vóór naad A.
De overgang zelf legde in één klap bloot:
- tien ontbrekende devDependencies
- twee kapotte e2e-configuraties
En eerder: de umbrella zou negen verwijderde kits hebben meegepubliceerd — onopgemerkt, omdat de integratie-app modules binnentrok via relatieve paden.
De poort
bash
cd foundation
npm run verify # build + typecheck + test + no-symlinksbin/foundation no-symlinks is onderdeel van npm run verify en faalt op elke symlink.
Zie je hem rood
Dat is het signaal, niet iets om te onderdrukken.
De ene uitzondering
solution-explorer/package.json heeft interne workspaces (solutions/*). Die zijn lokaal en raken deze regel niet.
Repo-topologie ≠ dependency-topologie
Sinds 2026-08-17 is heel Seifer/ wél één git-repo. Dat is geen tegenspraak: het zijn onafhankelijke keuzes.
| Keuze | Antwoord | Betekent |
|---|---|---|
| Eén git-repo? | ✅ ja | Eén history, één plek om een wijziging over meerdere deelprojecten in één commit te doen |
| Eén npm-workspace? | ❌ nee | Elk deelproject installeert zelf; interne dependencies komen uit een registry |
De twee registry's
| Wanneer | Registry |
|---|---|
| Tijdens ontwikkeling | Verdaccio in Docker, op localhost:4873 |
| Bij release | npmjs |
Die lokale registry bestaat zodat een wijziging getest kan worden zonder eerst onomkeerbaar naar npmjs te publiceren.
Verder lezen
foundation/REGISTRY-ONLY.md bevat het volledige argument, de commando's en de restpunten — waaronder §8, waar het inrichten van CI als openstaand punt staat.