Ein guter Node.js-Workflow, um Pakete auf dem neuesten Stand zu halten?


8

Ich habe kürzlich begonnen, ein Projekt in Node.js zu entwickeln. Natürlich sind die Pakete, die ich verwende, momentan ziemlich aktuell, da ich neu beginne und die neueste Version verwende, aber es gibt eine ziemlich hohe Versionsumsatzrate für die meisten Node.js-Pakete und oft werden bestimmte Funktionen verfügbar sein veraltet oder fallen gelassen, und natürlich werden Sicherheitslücken behoben.

Da die meisten meiner Pakete mithilfe der semantischen Versionssyntax angegeben werden ^1.2.3(halten Sie sich an die angegebene Hauptversionsnummer, um Änderungen zu vermeiden), gehen wichtige Aktualisierungen über die aktuelle Hauptversion hinaus verloren.

Was ist ein umsichtiger Weg, um sicherzustellen, dass Sie mit Ihren Abhängigkeiten einigermaßen auf dem neuesten Stand sind? Ist es beispielsweise erforderlich, eine wöchentliche Überprüfung auf Aktualisierungen Ihrer Abhängigkeiten in Ihren Workflow aufzunehmen, um sicherzustellen, dass Sie nicht weit zurückfallen? Wäre es aus diesem Grund eine gute Idee, Abhängigkeiten zu minimieren, um den Aufwand beim Umgang mit Änderungen zu minimieren, wenn Sie unbedingt auf neuere Hauptversionen aktualisieren müssen?


1. Machen Sie sich mit einem Paket-Update vertraut. 2. Bewerten Sie die im Update vorgenommenen Änderungen. 3. Entscheiden Sie, ob die Änderungen für Ihr Projekt nützlich und relevant sind. Wenn dies der Fall ist, 4. Aktualisieren Sie das Paket auf die neue Version.
Robert Harvey

@ Robert Harvey. Mein einfaches Knotenprojekt verwendet ungefähr ein Dutzend Hauptpakete direkt, möglicherweise hundert indirekt. Ihr Ansatz skaliert nicht. Dies ist eine gute Frage, um zu überprüfen, ob es einen einfacheren und automatisierteren Weg gibt.
user949300

1
@Jez, hast du dir npm-check-updates oder den npm outdatedBefehl angesehen? Ich habe es auch nie benutzt, aber sie sehen aus wie ein Anfang.
user949300

Wenn Sie GitHub verwenden, möchten Sie möglicherweise etwas wie Greenkeeper ausprobieren, mit dem Ihre Tests für neue Versionen Ihrer Abhängigkeiten ausgeführt werden.
Whymarrh

Antworten:


6

Dies ist der Workflow, den ich derzeit für ein Projekt mit monatlichen Releases verwende.

  • Gehen Sie nach der Veröffentlichung die Abhängigkeiten durch und aktualisieren Sie diejenigen, die nur geringfügige Änderungen und Patch-Updates aufweisen. Da npm auf die semantische Versionierung folgt, sollte dies Ihr System nicht beschädigen, wenn die Autoren der Pakete ihre Arbeit gut gemacht haben.
  • Führen Sie einen Rauchtest durch. Wenn eine Abhängigkeit unterbrochen ist, erstellen Sie eine Entwicklungsaufgabe, um diese Abhängigkeit zu aktualisieren. Es könnte ein Ticket sein, es könnte eine Aufgabe für Ihren Sprint sein usw. Der Punkt ist, dass die Aktualisierung dieser nicht sofort erfolgt und Arbeit erfordert, sodass Sie sie planen müssen. Jedes Feedback von Ihrem ersten Versuch wird helfen.
  • Planen Sie Aufgaben, um Abhängigkeiten mit wesentlichen Änderungen zu aktualisieren.
  • Frieren Sie Ihre Abhängigkeiten auf die neuesten Versionen ein.

Ziel ist es, überhaupt keine automatisierten Updates zu haben. Sie können Ihr System auf eine Weise beschädigen, die Sie nicht erwarten, und sehr wahrscheinlich, wenn Sie andere Änderungen vorgenommen haben, was nicht dazu beiträgt, das Problem herauszufinden.

Das Aktualisieren von Abhängigkeiten sollte ein bewusster Prozess sein. Wenn eine davon Ihr System beschädigt, sollten Sie wissen, welche.

Kleinere Updates, die brechen und unbemerkt bleiben, werden wahrscheinlich in Ihrem Sprint der Entwicklung oder Tests erfasst. Aus diesem Grund tun Sie dies nach der Veröffentlichung, da Sie so viel Zeit benötigen , um sie zu erkennen und auf dieses Problem zu reagieren, bevor Sie live gehen.

Beachten Sie, dass ich diesen Prozess tatsächlich in einem .NET + Nuget-Abhängigkeitsprojekt verwende, aber er gilt ziemlich genau für Node und npm / bower, Rails + Bundle usw.

Schließlich können Sie nette Befehle verwenden, die Ihnen beim Einfrieren / Auftauen von Abhängigkeiten helfen und diese sogar Ihrem Repo hinzufügen. Siehe npm shrinkwrap.


0

Ich verwende eine andere Lösung mit einem anderen Ansatz: https://uptodatenpm.com. Sie sendet Ihnen wöchentlich einen Newsletter mit Informationen zu neuen Versionen der Abhängigkeiten Ihres Projekts, damit Sie entscheiden können, welche Deps aktualisiert werden sollen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.