Was macht Eine Abhängigkeit sicher aktualisieren?
Ziel: Eine Abhängigkeit (oder eine eng gekoppelte Gruppe) auf eine neuere Version verschieben, wobei die Brüche im Voraus verstanden werden und nicht erst danach entdeckt werden.
Plan
- Aktuellen Zustand bestimmen. Finde die installierte Version (Sperrdatei, nicht nur die Manifestdatei) und die Zielversion. Falls der Benutzer "neueste" gesagt hat, suche sie mit dem Paketmanager (
npm view <pkg> version,pip index versions <pkg>,cargo searchusw.) und gib die Nummer an. - Basislinie aufzeichnen auf einem sauberen Arbeitsstand: installieren, bauen, Tests, Lint, Typprüfung. Notiere etwaige bereits bestehende Fehler, damit du sie nicht der Aktualisierung anlastest.
- Die echten Release-Notes lesen. Öffne das Changelog, die Release-Notes oder die Migrationsanleitung für jede Version zwischen der aktuellen und der Zielversion. Extrahiere: Breaking Changes, entfernte oder umbenannte APIs, neue Mindestlaufzeitversionen, geänderte Standardwerte, Veraltungen. Zitiere den Quelllink für jeden Punkt. Wenn du keine Release-Notes finden kannst, sage dies und behandle die Aktualisierung als höheres Risiko.
- Auswirkungen kartieren. Durchsuche die Codebasis mit
rgnach jeder entfernten, umbenannten oder geänderten API. Liste die betroffenen Dateien vor der Bearbeitung auf.
Ausführen
- Aktualisiere nur diese Abhängigkeit (und erforderliche Peers). Führe keine pauschale "alle aktualisieren"-Aktion aus.
- Aktualisiere die Manifestdatei und die Sperrdatei mit dem Paketmanager des Projekts, nicht von Hand.
- Nimm die Codeänderungen vor, die die Notizen erfordern, beginnend mit den kleinsten. Ersetze veraltete Verwendungen, wenn die neue Form äquivalent ist.
- Führe Install, Build, Tests, Lint und Typprüfung erneut aus. Vergleiche mit der Basislinie.
- Bei Hauptversionen führe, falls möglich, auch die Anwendung oder den Hauptbeispielpfad aus und überprüfe die Bundlegröße, Startwarnungen und Veraltungswarnungen.
- Wenn die Aktualisierung eine Erhöhung der Mindestlaufzeit oder der Peerversion erfordert, halte an und frage, bevor du sie änderst.
Bericht
Aktualisierung: <pkg> <von> -> <nach>
Quellen: <Changelog-Links>
Angewandte Breaking Changes: <Liste mit Dateiverweisen>
Durchgeführte Änderungen: <Zusammenfassung>
Überprüfung: <Befehle, Basislinie vs. danach>
Warnungen oder Folgemaßnahmen: <Veraltungen, übersprungene Elemente, Risiken>
Rollback: setze <Dateien> zurück oder `git revert <Commit>`
Regeln
- Aktualisiere und refaktoriere niemals in derselben Änderung.
- Überspringe niemals einen fehlschlagenden Test oder lockere einen Versionsbereich, um ein Problem zu verstecken.
- Sicherheitskorrekturen: Gib an, welches Advisory die Aktualisierung nur dann adressiert, wenn du es in einem offiziellen Advisory oder den Release-Notes gesehen hast.
- Wenn eine transitive Abhängigkeit einen Konflikt erzwingt, zeige die Konfliktausgabe und schlage Optionen vor, anstatt blind zu überschreiben.