isy-angular-widgets – Widget-Bibliothek für Angular-Anwendungen der öffentlichen Verwaltung
Diese Datei richtet sich an Entwicklerinnen und Entwickler, die den Baustein selbst weiterentwickeln. Sie beschreibt den Einstieg in das Repository: Aufbau, lokales Setup, Skripte und Qualitätssicherung.
Du möchtest die Bibliothek in einer eigenen Anwendung verwenden? Dann ist die README der Bibliothek der richtige Einstieg. Dort stehen Installation, Konfiguration und die Dokumentation der einzelnen Widgets. Hinweise zu Breaking Changes zwischen zwei Versionen enthält die MIGRATION.md.
Das Repository ist ein Angular-Workspace mit zwei Projekten:
| Projekt | Pfad | Typ | Zweck |
|---|---|---|---|
isy-angular-widgets |
projects/isy-angular-widgets |
Library | Die Widget-Bibliothek. Wird als npm-Paket @isyfact/isy-angular-widgets veröffentlicht. |
isy-angular-widgets-demo |
projects/isy-angular-widgets-demo |
Application | Demo-Anwendung mit Beispielen für Styleguide-Patterns. Wird auf GitHub Pages deployed. |
Ergänzend relevant:
Example :├── .github/workflows/ CI-Pipelines (Build, Test, Pages-Deploy, npm-Publish)
├── docs/ Antora-Konzeptdokumentation
├── tools/ Hilfsskripte für Build und Pages-Deployment
├── CHANGELOG.md Änderungen je Version
└── CONTRIBUTING.md Branch-Modell, Commit-Konventionen, Pull RequestsDie Demo-Anwendung wird für beide unterstützten Versionslinien veröffentlicht:
| Inhalt | URL |
|---|---|
| Demo (aktuelle Linie) | https://isyfact.github.io/isy-angular-widgets/ |
| API-Dokumentation (Compodoc) | https://isyfact.github.io/isy-angular-widgets/documentation/ |
| Demo (ältere Linie) | https://isyfact.github.io/isy-angular-widgets/v21/ |
Das Projekt setzt die in der package.json unter engines definierte Node.js-Version voraus. Die CI baut und testet mit Node.js 24.
git clone https://github.com/IsyFact/isy-angular-widgets.git
cd isy-angular-widgets
npm installDie Abhängigkeiten müssen auch nach dem Ergänzen neuer Pakete erneut installiert werden.
Die Demo-Anwendung ist der schnellste Weg, Änderungen an der Bibliothek sichtbar zu machen:
Example :npm run start| Skript | Beschreibung |
|---|---|
npm run start |
Startet die Demo-Anwendung im Development-Server |
npm run watch |
Baut ein Projekt im Watch-Modus; das Projekt ist anzugeben, z. B. npm run watch -- isy-angular-widgets |
npm run build |
Baut Bibliothek, Demo-Anwendung und Schematics |
npm run build:widgets_lib |
Baut ausschließlich die Bibliothek inklusive Schematics |
npm run build:widgets_demo |
Baut ausschließlich die Demo-Anwendung |
npm run build-and-pack:widgets_lib |
Baut die Bibliothek und erzeugt ein installierbares TGZ-Paket |
npm test |
Führt die Unit- und Integrationstests aus |
npm run lint |
Lintet Bibliothek und Demo-Anwendung (lint:lib, lint:demo einzeln) |
npm run prettier:check |
Prüft die Codeformatierung |
npm run prettier:fix |
Behebt Formatierungsfehler automatisch |
npm run e2e |
Führt die E2E-Tests der Demo-Anwendung aus |
npm run compodoc:build |
Erzeugt die API-Dokumentation nach docs/ (compodoc:serve zeigt sie lokal an) |
npm run generate-browser-support |
Aktualisiert die Browser-Support-Konfiguration |
Hinweis:
Example :compodoc:buildlegt die erzeugte API-Dokumentation im Verzeichnisdocs/ab, in dem auch die Antora-Konzeptdokumentation liegt. Die generierten Dateien sind nicht in der.gitignoreenthalten und sollten vor einem Commit wieder entfernt werden:git clean -fd docs/
Die folgenden Prüfungen entsprechen den zentralen Schritten der CI-Pipeline und sollten vor jedem Pull Request lokal fehlerfrei durchlaufen:
Example :npm run prettier:check
npm run lint
npm test
npm run build:widgets_lib
npm run build:widgets_demoZusätzlich führt die CI einen Compodoc-Build, eine SBOM-Erzeugung und einen SonarCloud-Scan aus.
Pull Requests, welche die CI-Checks nicht erfüllen, werden ungesichtet abgelehnt. Details dazu stehen in der CONTRIBUTING.md.
Für die Demo-Anwendung sind exemplarisch einige E2E-Tests mit TestCafe umgesetzt. TestCafe ist keine Abhängigkeit des Repositorys und wird beim Aufruf über npx nachgeladen.
Vor der Ausführung muss die Demo-Anwendung unter http://localhost:4200 laufen (npm run start). Das Skript startet Chrome im Headless-Modus; alternativ kann im e2e-Skript ein anderer Browser eingetragen werden.
npm run e2eHinweis für macOS: TestCafe benötigt die Berechtigung zur Bildschirmaufnahme. Ohne diese bricht der Lauf mit
UnableToAccessScreenRecordingAPIErrorab. Die Berechtigung wird unter Systemeinstellungen → Datenschutz & Sicherheit → Bildschirmaufnahme fürTestCafe Browser Toolserteilt.
Um einen Entwicklungsstand vor dem Release in einer echten Anwendung zu prüfen, wird die Bibliothek gebaut und als TGZ-Paket verpackt:
Example :npm run build-and-pack:widgets_libDas Paket liegt anschließend unter dist/isy-angular-widgets, zum Beispiel:
dist/isy-angular-widgets/isyfact-isy-angular-widgets-0.0.0.tgzIm Zielprojekt wird das Paket über den Pfad zur TGZ-Datei installiert:
Example :npm install "file:[WIDGETS_LIB_PATH].tgz"Unter Angular 22 ist wegen der Peer-Dependencies von PrimeNG 21 zusätzlich --legacy-peer-deps erforderlich:
npm install "file:[WIDGETS_LIB_PATH].tgz" --legacy-peer-depsAnschließend kann die Schematic der Bibliothek ausgeführt werden:
Example :npx ng generate @isyfact/isy-angular-widgets:ng-add
npm install --legacy-peer-depsHinweis:
ng addsollte nicht direkt auf die lokale TGZ-Datei angewendet werden, da die Angular CLI die Paketinformationen lokaler Dateien unter Umständen nicht korrekt ausliest.
Der Schematic-Lauf endet in Angular-22-Projekten mit der Meldung The Schematic workflow failed.; die Konfiguration ist zu diesem Zeitpunkt bereits vollständig geschrieben. Details dazu stehen in der README der Bibliothek.
Hintergründe zur Versionskombination aus Angular 22 und PrimeNG 21 stehen in der MIGRATION.md.
Die unterstützten Mindest-Browser-Versionen sind statisch in der Bibliothek hinterlegt:
Example :projects/isy-angular-widgets/src/lib/browser-support/browser-support.config.jsonDie Datei wird über folgendes Skript erzeugt:
Example :npm run generate-browser-supportDas Skript ermittelt die Browser-Versionen anhand der Browser-Support-Regeln des aktuellen Angular-Major-Releases. Die generierte Datei ist Bestandteil der Bibliothek und muss eingecheckt werden. Nach einem Update auf ein neues Angular-Major-Release ist das Skript erneut auszuführen.
Die HauptfensterComponent wertet diese Konfiguration beim Laden der Anwendung aus und zeigt bei einer nicht unterstützten Browser-Version eine Warnmeldung an. Die Prüfung ist standardmäßig aktiviert und lässt sich über das Input-Property checkBrowserVersion deaktivieren:
<isy-hauptfenster [checkBrowserVersion]="false">
<!-- Anwendungscode -->
</isy-hauptfenster>Releases werden über eine GitHub Action erzeugt, die ausgeführt wird, sobald ein Tag mit einer gültigen Versionsnummer nach SemVer erstellt wird. Die Versionsnummer wird dabei automatisch in die package.json der gebauten Bibliothek eingetragen.
Die Versionsnummer muss deshalb nicht manuell in der package.json gepflegt werden – dort steht dauerhaft 0.0.0.
Die Vorbereitung eines Releases erfolgt über einen Branch nach dem Schema release/<planned-version>. Details dazu stehen in der CONTRIBUTING.md.
| Dokument | Inhalt |
|---|---|
| CONTRIBUTING.md | Branch-Modell, Commit-Konventionen, Pull Requests |
| README der Bibliothek | Verwendung der Bibliothek in eigenen Anwendungen |
| MIGRATION.md | Breaking Changes und Migrationshinweise je Version |
| CHANGELOG.md | Vollständige Liste aller Änderungen |
| Konzept Angular | Konzeptdokumentation der Bibliothek |
Veröffentlicht unter der Apache-2.0-Lizenz.