

Nx ist ein mächtiges Tool, um Angular Apps in Monorepos zu entwickeln. Es bietet viele Vorteile, wie z.B. Code Sharing, Dependency Graphs und vieles mehr. In diesem Artikel zeige ich euch, wie wir bei FORTIX Nx in der Praxis verwenden.
Nx ist für mich zum Grundstein jeder neuen Angular Anwendung geworden. Wir bei FORTIX haben schon viele Projekte mit Nx umgesetzt und sind immer wieder begeistert, wie einfach es ist, Angular Apps in Monorepos zu entwickeln. Sogar für einzelne Anwendungen, die nicht in einem Monorepo liegen, lohnt es sich, Nx zu verwenden.
Nx ist ein Open-Source Toolkit, das von Nrwl entwickelt wurde. Es erweitert die Angular CLI um viele nützliche Features. Es stellt Tools und Bibliotheken bereit, die uns Entwickler dabei unterstützen, effizienter zu arbeiten. Diese sind besonders hilfreich für Projekte mit mehreren Anwendungen, Bibliotheken und geteiltem Code. Nx verbessert die Developer Experience durch fortschrittliche Funktionen wie Codegenerierung, Dependency Graphs und konsistente Projektstrukturen. Nx ist nicht nur für Angular Projekte geeignet, sondern auch für React, Node.js und viele weitere Technologien.
Wo Licht ist, ist auch Schatten. Nx ist nicht perfekt und hat auch einige Nachteile.
Nichtsdestotrotz überwiegen für mich die Vorteile von Nx und ich kann es nur empfehlen, es in jedem Angular Projekt zu verwenden.
Ich möchte euch noch ein kleines Beispiel zeigen, wie wir bei FORTIX Nx in der Praxis verwenden. Für unseren Kunden Bundesverband Photovoltaic Austria durften wir schon 3 verschiedene Angular Projekte umsetzen. Um dies möglichst effizient und somit auch kostengünstig zu gestalten, haben wir uns für die Verwendung von Nx entschieden. Dadurch konnten wir viele Vorteile von Nx nutzen und die Projekte schneller und effizienter umsetzen.
Bei den Projekten handelt es sich um nützliche Online PV-Tools für die Planung einer PV-Anlage. Die Tools sind auf der Website des Bundesverband Photovoltaic Austria verfügbar:
Alle Projekte leben in einem gemeinsamen Nx Monorepo. Mit dem Dependency Graph von Nx können wir die Abhängigkeiten zwischen den Projekten und Bibliotheken visualisieren und so einen besseren Überblick über die Struktur des Monorepos erhalten.

Alle 3 Anwendungen sind im Corporate Design von PV Austria umgesetzt. Darum wurde eine UI-Bibliothek erstellt, die alle UI-Komponenten für die verschiedenen Anwendungen enthält. Da es meistens ähnliche Komponenten in den verschiedenen Apps gibt, konnten wir viel Code wiederverwenden und die Entwicklung beschleunigen.
Diese Anwendungen haben sonst keine weitere geteilte Businesslogik, deshalb haben wir keine weiteren Bibliotheken erstellt. In komplexeren Anwendungen ist es aber möglich, mehrere Bibliotheken zu erstellen um so viel Code wie möglich wiederzuverwenden.
Wenn wir jetzt z.B. die PV-Profi-Suche App mit Cypress testen wollen, nimmt Nx uns viel Arbeit ab. Mit einem einzigen Befehl können wir End-to-End Tests für unsere App konfigurieren:
Wenn wir jetzt den Dependency Graphen erneut anzeigen, sehen wir, dass ein neues Projekt für die Cypress Tests erstellt wurde:

Nx hat die Art und Weise, wie wir Angular Apps entwickeln, grundlegend verändert. Die Lernkurve ist steil, aber wenn man erstmal die Konzepte und Tools verstanden hat, bietet Nx viele Vorteile, die die Entwicklung von Angular Apps oder Projekten mit anderen Technologien deutlich effizienter machen.