Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Wenn Sie eine Node.js-App mit vielen npm-Paketen entwickeln, ist es nicht ungewöhnlich, beim Erstellen Ihres Projekts Warnungen oder Fehler zu erkennen, wenn mindestens ein Paket aktualisiert wurde. Manchmal kommt es zu einem Versionskonflikt, oder eine Paketversion wird als veraltet markiert. Hier finden Sie einige schnelle Tipps, mit denen Sie Ihre package.json Datei konfigurieren und verstehen können, was passiert, wenn Warnungen oder Fehler angezeigt werden. Dies ist keine vollständige Anleitung für package.json und konzentriert sich nur auf npm-Paketversionsverwaltung.
Das npm-Paketversionsverwaltungssystem verfügt über strenge Regeln. Das Versionsformat folgt hier:
[major].[minor].[patch]
Angenommen, Sie haben ein Paket in Ihrer App mit einer Version von 5.2.1. Die Hauptversion ist 5, die Nebenversion ist 2, und der Patch ist 1.
- In einem Hauptversionsupdate enthält das Paket neue Features, die nicht abwärtskompatibel sind, d. h. Änderungen, die zu Brüchen führen.
- In einem Nebenversionsupdate wurden dem Paket neue Features hinzugefügt, die mit früheren Paketversionen abwärtskompatibel sind.
- In einem Patch sind mindestens eine oder mehrere Fehlerbehebungen enthalten. Fehlerkorrekturen sind immer abwärtskompatibel.
Beachten Sie, dass einige npm-Paketfeatures Abhängigkeiten haben. Um beispielsweise ein neues Feature des TypeScript-Compilerpakets (ts-loader) mit webpack zu verwenden, ist es möglich, dass Sie auch das Webpack npm-Paket und das Webpack-Cli-Paket aktualisieren müssen.
Um die Paketversionsverwaltung zu verwalten, unterstützt npm mehrere Notationen, die Sie im package.jsonverwenden können. Sie können diese Notationen verwenden, um den Typ der Paketupdates zu steuern, die Sie in Ihrer App akzeptieren möchten.
Angenommen, Sie verwenden React und müssen das react und react-dom npm-Paket einschließen. Sie können dies auf verschiedene Arten in Ihrer package.json-Datei angeben. Sie können z. B. die genaue Version eines Pakets wie folgt angeben.
"dependencies": {
"react": "16.4.2",
"react-dom": "16.4.2",
},
Bei Verwendung der obigen Schreibweise erhält npm immer genau die angegebene Version 16.4.2.
Sie können eine spezielle Schreibweise verwenden, um Updates auf Patchupdates (Fehlerbehebungen) zu beschränken. In diesem Beispiel:
"dependencies": {
"react": "~16.4.2",
"react-dom": "~16.4.2",
},
Sie verwenden das Tildezeichen (~), um npm anzufordern, ein Paket nur zu aktualisieren, wenn es gepatcht wird. Daher kann npm react 16.4.2 auf 16.4.3 (oder 16.4.4 usw.) aktualisieren, akzeptiert jedoch kein Update für die Haupt- oder Nebenversion. 16.4.2 wird also nicht auf 16.5.0 aktualisiert.
Sie können auch das Caretsymbol (^) verwenden, um anzugeben, dass npm die Nebenversionsnummer aktualisieren kann.
"dependencies": {
"react": "^16.4.2",
"react-dom": "^16.4.2",
},
Mithilfe dieser Notation kann npm react 16.4.2 auf 16.5.0 (oder 16.5.1, 16.6.0 usw.) aktualisieren, akzeptiert jedoch kein Update auf die Hauptversion. 16.4.2 wird also nicht auf 17.0.0 aktualisiert.
Wenn npm Pakete aktualisiert, wird eine package-lock.json Datei generiert, die die tatsächlichen npm-Paketversionen auflistet, die in Ihrer App verwendet werden, einschließlich aller geschachtelten Pakete. Während package.json die direkten Abhängigkeiten für Ihre App steuert, werden geschachtelte Abhängigkeiten (andere npm-Pakete, die von einem bestimmten npm-Paket benötigt werden) nicht gesteuert. Sie können die package-lock.json Datei in Ihrem Entwicklungszyklus verwenden, wenn Sie sicherstellen müssen, dass andere Entwickler und Tester die genauen Pakete verwenden, die Sie verwenden, einschließlich geschachtelter Pakete. Weitere Informationen finden Sie in der npm-Dokumentation package-lock.json .
Für Visual Studio wird die package-lock.json-Datei ihrem Projekt nicht hinzugefügt, sie finden Sie aber im Projektordner.