Umstieg auf die Webcrypto API fĂŒr Gladys Plus statt des Polyfills, den wir bisher verwendet haben
Aktualisierung der ServerabhÀngigkeiten
Aktualisierung der Frontend-AbhÀngigkeiten
Aktualisierung der Github Actions
Aktualisierung von Cypress
Was ich bisher gemacht habe:
1., 2., 3. (teilweise) und 5. in diesem PR:
Bisher wechsle ich zu Node.js 18 auf dem Server und Node.js 16 auf dem Frontend, da preact-cli unter Webpack 4 lÀuft, das derzeit nicht mit Node.js 18 kompatibel ist.
Mehrere GrĂŒnde fĂŒr diese Verbesserung, es ist nicht nur der Wechsel zu Node.js 16/18, der der SchlĂŒssel ist:
Open-Zwave war eine auf C+±Bindings basierende Bibliothek, die bei jedem npm install + docker build fĂŒr jede Architektur kompiliert werden musste. Das Entfernen dieser Bibliothek hat viel beigetragen.
Vor Node.js 16 war die Webcrypto-API in Node.js nicht verfĂŒgbar, daher habe ich einen Polyfill verwendet, der bei jedem npm install + jedem docker build fĂŒr jede Architektur kompiliert werden musste.
In dem Code des Gateways sieht die Ănderung so aus:
Dadurch wird node-webcrypto-ossl entfernt, das eine Qual zum Kompilieren war, und wir nutzen die native Node.js-API.
Potenziell verbessert dies die Leistung und StabilitÀt des Gladys Plus-Teils, da wir eine offizielle und robuste native API nutzen.
Wir wechseln zu einer neueren Version von sqlite3, die die richtigen Bindings mit der Node-API hat und normalerweise fĂŒr jede Architektur vorkompiliert ist. Auch hier sparen wir uns ein Build pro npm install + Docker-Build pro Architektur.
Im GroĂen und Ganzen hat sich das Ăkosystem stark weiterentwickelt, und die Tatsache, dass wir nicht die neueste Version von Node verwenden, hat uns daran gehindert, viele neue Optimierungen zu nutzen.
Ein weiterer Vorteil all dessen ist, dass wir einen viel einfacheren Entwickler-Onboarding-Prozess haben werden, und dadurch wird ein Hindernis fĂŒr die Entwicklung des Gladys-Dienstes entfernt.
Wir werden die Tutorials aktualisieren können, und es wird viel einfacher sein
Zur Info, ich habe die verschiedenen RĂŒckmeldungen zur PR integriert und die PR in master gemerged, damit sich alle laufenden PRs anpassen und von den Build-Geschwindigkeitsverbesserungen profitieren können!
Ich habe die Entwicklerdokumentation fĂŒr Linux/MacOS aktualisiert, die meiner Meinung nach jetzt viel klarer ist, open-zwave ist Geschichte
Zur Info, ich bin schlieĂlich auf Node.js 18 fĂŒr Backend und Frontend umgestiegen, also kein Node 16 mehr.
FĂŒr die Windows-Dokumentation, könnte jemand eine ĂberprĂŒfung vornehmen und sicherstellen, dass alles mit Node.js 18 LTS auf WSL funktioniert und die Dokumentation aktualisieren? Danke!
Und das ist noch nicht alles, es gibt noch Verbesserungspotenzial. Es gibt 4-5 Tests fĂŒr die MQTT- und Zigbee2mqtt-Dienste, die jeweils 10 Sekunden dauern, also fast die HĂ€lfte der Tests wird auf diesen Integrationen ausgefĂŒhrt.