Skip to content

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-symlinks

bin/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.

KeuzeAntwoordBetekent
Eén git-repo?✅ jaEén history, één plek om een wijziging over meerdere deelprojecten in één commit te doen
Eén npm-workspace?❌ neeElk deelproject installeert zelf; interne dependencies komen uit een registry

De twee registry's

WanneerRegistry
Tijdens ontwikkelingVerdaccio in Docker, op localhost:4873
Bij releasenpmjs

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.

Seifer — interne documentatie. Bron van waarheid blijft de repo zelf.