isy-angular-widgets – Widget-Bibliothek für Angular-Anwendungen der öffentlichen Verwaltung
Versionslinie 21 (Angular 21) Dieser Branch pflegt die ältere unterstützte Versionslinie der Bibliothek. Die neueste Versionslinie wird im Branch
developentwickelt.
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 (diese Linie, v21) | https://isyfact.github.io/isy-angular-widgets/v21/ |
| API-Dokumentation (Compodoc, diese Linie) | https://isyfact.github.io/isy-angular-widgets/v21/documentation/ |
| Demo (aktuelle Linie) | https://isyfact.github.io/isy-angular-widgets/ |
Der Pages-Deploy erfolgt zentral über die Workflow-Definition auf dem develop-Branch, die diesen Branch mit auscheckt und unter /v21/ veröffentlicht. Ein Push auf develop-21 stößt diesen Deploy automatisch an.
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 --branch develop-21 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 die Bibliothek im Watch-Modus mit der Development-Konfiguration |
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"Anschließend kann die Schematic der Bibliothek ausgeführt werden:
Example :npx ng generate @isyfact/isy-angular-widgets:ng-addHinweis:
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.
Details zur Einrichtung stehen in der README der Bibliothek.
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.