update guide v13 - IHK-GfI/lux-components GitHub Wiki
In diesem Update Guide wird beschrieben, wie man die LUX-Components aktualisieren kann. Es handelt sich um inkrementelle Updates. D.h. alle Updates müssen in der korrekten Reihenfolge (Beispiel: 13.0.0 -> 13.0.1 -> 13.1.0 -> 13.1.1 ->...) ausgeführt werden und es darf kein Update übersprungen werden, da jedes Update neben der Versionsaktualisierung in der package.json auch potenziell weitere wichtige Änderungen enthalten kann, die sonst fehlen würden.
Die Major-Version einer LUX-Componentsversion (Beispiel: >13<.x.x) entspricht der verwendeten Angular-Version. D.h. die LUX-Components 11.x.x basieren auf Angular 11 und die LUX-Components 13.x.x basieren dementsprechend auf Angular 13. Aus Zeitgründen wurde Angular 12 übersprungen und deshalb gibt es auch keine LUX-Components 12.x.x.
In diesem Abschnitt wird beschrieben, wie man die LUX-Components aktualisieren kann. Alle Updates sind inkrementelle Updates. D.h. alle Updates müssen in der korrekten Reihenfolge ausgeführt werden und es darf kein Update übersprungen werden, da jedes Update, neben der Versionsaktualisierung in der package.json, auch potenziell weitere wichtige Änderungen enthalten kann, die sonst fehlen würden.
- LUX-Components-Updater aktualisieren:
npm update @ihk-gfi/lux-components-update
- LUX-Components-Updater ausführen:
ng generate @ihk-gfi/lux-components-update:update-13.3.0
- Wenn Probleme beim Ausführen von
npm installmit den Abhängigkeiten (z.B.ng-build-plus,@angular-devkit/build-angular,...) auftreten sollten, bitte einmal dennode_modules-Ordner und diepackage-lock.json-Datei löschen und noch einmalnpm installausführen. - Fertig!
In diesem Abschnitt wird beschrieben, wie man die LUX-Components aktualisieren kann. Alle Updates sind inkrementelle Updates. D.h. alle Updates müssen in der korrekten Reihenfolge ausgeführt werden und es darf kein Update übersprungen werden, da jedes Update, neben der Versionsaktualisierung in der package.json, auch potenziell weitere wichtige Änderungen enthalten kann, die sonst fehlen würden.
- LUX-Components-Updater aktualisieren:
npm update @ihk-gfi/lux-components-update
- LUX-Components-Updater ausführen:
ng generate @ihk-gfi/lux-components-update:update-13.2.0
- Wenn Probleme beim Ausführen von
npm installmit den Abhängigkeiten (z.B.ng-build-plus,@angular-devkit/build-angular,...) auftreten sollten, bitte einmal dennode_modules-Ordner und diepackage-lock.json-Datei löschen und noch einmalnpm installausführen. - Fertig!
In diesem Abschnitt wird beschrieben, wie man die LUX-Components aktualisieren kann. Alle Updates sind inkrementelle Updates. D.h. alle Updates müssen in der korrekten Reihenfolge ausgeführt werden und es darf kein Update übersprungen werden, da jedes Update, neben der Versionsaktualisierung in der package.json, auch potenziell weitere wichtige Änderungen enthalten kann, die sonst fehlen würden.
- LUX-Components-Updater aktualisieren:
npm update @ihk-gfi/lux-components-update
- LUX-Components-Updater ausführen:
ng generate @ihk-gfi/lux-components-update:update-13.1.0
- Fertig!
Bitte zuerst die vollständige Anleitung lesen und erst danach mit dem Update beginnen.
Das Update sollte auf einem eigenen Branch durchgeführt werden und nicht direkt auf dem Develop-Branch.
- IE11 wird nicht länger unterstützt.
-
luxSelectedder LUX-Table ist jetzt immer einSet<any>und keinany[]mehr, da im Strict-Modus die Typen vom Getter, Setter und Outputevent identisch sein müssen. Ab dieser Version ist es daher einheitlich zum Set geworden. Sollte man weiterhin ein Array nutzen wollen, kann das OutputeventluxSelectedAsArrayChangeverwendet werden. - LUX-File-List: Die Property
luxSelectedFilesUseAlwaysArraywurde entfernt. - Die Property
luxIconAlignWithLabelaus den Komponentenlux-buttonundlux-iconwurde entfernt. - In der
tsconfig.jsonin den LUX-Components wurde der Wert vonstrictTemplatesauftruegesetzt. Aus diesem Grund wurden die folgenden Typen eingeführt:- LuxActionColorType
- LuxBadgeColor
- LuxBadgeSize
- LuxBadgePosition
- LuxChipsOrientation
- LuxDatepickerStartViewType
- LuxProgressModeType
- LUX-Components auf die letzte Version
11.x.xaktualisieren. - Node.js auf 16.x.x (bitte ausschließlich LTS-Versionen verwenden) aktualisieren und ab sofort verwenden.
-
Die Datei
package-lock.jsonlöschen. -
Angular auf 12 aktualisieren:
npx @angular/cli@12 update @angular/core@12 @angular/cli@12 @angular-eslint/schematics@12 @angular/material@12 ngx-build-plus@12 --allow-dirty --forceDer obige Befehl führt am Ende automatisiert ein
npm installaus. Dabei können Abhängigkeitsfehler in die Console geloggt werden. Diese können aber ignoriert werden. Details siehe Erklärung. Dies gilt bis Schritt 7. Ab Schritt 7 dürfen keine Abhängigkeitsfehler mehr auftreten. -
Angular auf 13 aktualisieren:
npx @angular/cli@13 update @angular/core@13 @angular/cli@13 @angular-eslint/schematics@13 @angular/material@13 ngx-build-plus@13 --allow-dirty --force -
LUX-Components-Updater aktualisieren:
npm install @ihk-gfi/lux-components-update@13 --save-dev --force -
Updater ausführen:
ng g @ihk-gfi/lux-components-update:update -
Abhängigkeiten aktualisieren:
npm install --force -
Noch einmal die Abhängigkeiten ohne die Option
--forceaktualisieren, um auszuschließen, dass echte Probleme dadurch die unterdrückt wurden:npm installJetzt dürfen keine Abhängigkeitsfehler mehr in der Console geloggt werden!
-
Die deutschen Übersetzungen der LUX-Components im Projekt aktualisieren:
npm run xi18n -
Die englischen Übersetzungen der LUX-Components im Projekt aktualisieren:
ng g @ihk-gfi/lux-components-update:update-en-messages -
In den HTML-Templates nach dem Wert
@20c44b9d-45e1-447a-a141-1de0695c9c35@suchen und diesen ersatzlos löschen.
Beispiel:<lux-input luxLabel="@20c44b9d-45e1-447a-a141-1de0695c9c35@" ...></lux-input>
Ersetzen durch:
<lux-input luxLabel="" ...></lux-input>
oder
<lux-input ...></lux-input>
Hierbei handelt es sich um einen Fehler im Updater, der in gewissen Konstellationen auftritt.
- Fertig!
-
Falls es eigene Abhängigkeiten im Projekt gibt, die nicht über den LUX-Components-Updater aktualisiert werden, sollten diese jetzt ebenfalls aktualisiert werden.
-
Einen Smoketest (build, lint und test) ausführen:
npm run smoketest -
Anwendung manuell vollständig testen.
-
Fertig!
-
Die Meldung
Could not find Angular Material core theme. Most Material...in der Browser-Console kann ignoriert werden. Das Theme ist ausgelagert, funktioniert aber tadellos. Nur der Checker erkennt das leider nicht und schreibt diese Warnung in die Browser-Console raus. -
Sollte die Fehlermeldung
Error: PostCSS received undefined instead of CSS stringauftreten, dann gibt es einen leeren Styles-Eintrag (styles: ['']) in einer Komponente (@Component in einer TypeScript-Datei). Einfach danach suchen und löschen. -
Die Klasse
LuxBackgroundColorsEnumwird nicht gefunden. Die Klasse wurde zugunsten der folgenden Typen aufgegeben.Beispiel:
color: LuxBackgroundColorsEnum.red;
Wird zu:
color: "red";
- Die neue Node-Version 16.x muss in die zentralen Jenkins-Builds eingetragen werden.
Die Angular-Updater installieren immer die aktuellsten Versionen. D.h. wenn eine neue Angular-Version erscheint und der LUX-Components-Updater noch nicht angepasst wurde, dann kommt es dazu, dass der LUX-Components-Updater eine ältere Version installieren möchte. Das scheitert an der package-lock.json, weil dort die neueren Versionen bereits festgelegt sind. Aus diesem Grund wird hier die Option --force angegeben.