Bisher teilen die Bibliotheken ihren Code im Repository: Der Build kompiliert alles zusammen. Sobald eine Anwendung außerhalb sie braucht (die Buchung in einem eigenen Repository, ein Kunde, ein anderes Team), braucht die Bibliothek eine Fassung, eine Schnittstelle und ein Paket. Diese Lektion macht aus einer UI-Bibliothek kladde-ui ein Paket, installiert es in einer zweiten Anwendung und lässt nx release die Fassung ausrechnen, ohne etwas zu veröffentlichen.

Stand der Prüfung. Ausgeführt (Node 24.22.3, Nx 24.0.6, Angular 22.2, ng-packagr 22.2, Vitest 4.1.12, Wegwerf-Projekte außerhalb des Repositorys): Anlage mit --publishable, Lint, Test und Build (Exit 0, nach einer Korrektur), npm pack, Installation in eine zweite Anwendung samt Build (Exit 0) und Test (1 von 1), nx release --first-release --dry-run und nx release publish --dry-run (je Exit 0, danach kein Tag, keine Änderung). Gelesen: Nx „Manage Releases“ (als Zusammenfassung) und Learn „Publish and download npm packages with Azure Artifacts“. Nicht ausgeführt: jede echte Veröffentlichung, ein Feed, nx release ohne --dry-run, Verdaccio. Offen: die Spezifikationen von Semantic Versioning und Conventional Commits, die Nx-Seite zu npm-Paketen (404).

Buildbar und veröffentlichbar

Die Bibliotheken aus 0102 sind weder noch: Die Anwendung importiert ihren Quelltext über die Pfade in tsconfig.base.json und baut sie mit. Der Generator @nx/angular:library kennt laut seiner Hilfe die Schalter --buildable und --publishable. Der Unterschied nach unserem Verständnis (die Hilfe gibt nur Kurzbeschreibungen): Eine buildbare Bibliothek hat eine Aufgabe build mit ng-packagr und ist so einzeln cachebar; eine veröffentlichbare hat zusätzlich ein Paket mit Name und Fassung für Verbraucher außerhalb.

Ein Paket ist ein Versprechen: Name, öffentliche Schnittstelle und Fassung sind ab der Veröffentlichung eine Zusage an Fremde. Deshalb veröffentlicht man nicht jede Bibliothek, sondern die wenigen, die jemand von außen braucht. Für die Kladde ist das kladde-ui: Bausteine, die Büro und Buchung teilen und die ein Dritter einsetzen darf.