815 Stimmen

npm prüfen und bei Bedarf Paket aktualisieren

Wir müssen Karma Test Runner in TeamCity integrieren und dafür würde ich gerne sys-engineers kleines Skript (powershell oder was auch immer), das würde:

  1. die gewünschte Versionsnummer aus einer Konfigurationsdatei holen (ich denke, ich kann sie als Kommentar direkt in die karma.conf.js )

  2. prüfen, ob die definierte Version von Karma Runner im globalen Repo von npm installiert ist

  3. falls nicht, oder die installierte Version älter als gewünscht ist: die richtige Version auswählen und installieren

  4. ausführen: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

Meine eigentliche Frage ist also: "Wie kann man in einem Skript prüfen, ob die gewünschte Version des Pakets installiert ist?". Sollte man die Prüfung durchführen, oder ist es sicher, einfach aufzurufen npm -g install jedes Mal?

Ich möchte nicht immer die neueste verfügbare Version prüfen und installieren, weil andere Konfigurationswerte inkompatibel werden könnten

2voto

Normal Punkte 163

Wenn Sie ein Paket auf die neueste Version aktualisieren wollen (Major, Minor und Patch), fügen Sie die @latest am Ende des Paketnamens anfügen, z. B:

npm i express-mongo-sanitize@latest

Dies aktualisiert express-mongo-sanitize von Version 1.2.1 zum Beispiel an Version 2.2.0 .

Wenn Sie wissen wollen, welche Pakete veraltet sind und welche aktualisiert werden können, verwenden Sie die npm outdated Befehl

ex:

$ npm outdated
Package             Current   Wanted  Latest  Location                         Depended by
express-rate-limit    3.5.3    3.5.3   6.4.0  node_modules/express-rate-limit  apiv2
helmet               3.23.3   3.23.3   5.1.0  node_modules/helmet              apiv2
request-ip            2.2.0    2.2.0   3.3.0  node_modules/request-ip          apiv2
validator           10.11.0  10.11.0  13.7.0  node_modules/validator           apiv2

1voto

Ronen Punkte 1165

Noch einer für Bash:

npm outdated -parseable|cut -d: -f5|xargs -L1 npm i

1voto

tres Punkte 1152

Ich bin nur daran interessiert, die veralteten Pakete zu aktualisieren, indem ich die semantischen Versionierungsregeln in meinem package.json .

Hier ist ein Einzeiler, der das regelt

npm update `npm outdated | awk '{print $1}' | tr '\n' ' '`

Was es bewirkt:

  1. nimmt die Ausgabe von npm outdated und
  2. leitet das in awk wo wir nur den Namen des Pakets (in Spalte 1) abrufen
  3. dann verwenden wir tr um Zeilenumbruchzeichen in Leerzeichen umzuwandeln
  4. schließlich - unter Verwendung von Backticks - verwenden wir die Ausgabe der vorangegangenen Schritte als Argumente für npm update damit wir alle benötigten Aktualisierungen auf einen Schlag erhalten.

Man sollte meinen, dass es eine Möglichkeit gibt, dies zu tun, indem man npm allein, aber es war nicht hier, als ich nachgeschaut habe, also stelle ich es hier ein, falls es für jemanden hilfreich ist.

** Ich glaube, es gibt eine Antwort, die MikeMajara hier zur Verfügung stellt, die etwas Ähnliches tut, aber es ist das Anhängen @latest auf den aktualisierten Paketnamen, was mich im Rahmen meiner regelmäßigen Aktualisierungen nicht wirklich interessiert.

1voto

Michael S. Punkte 436

Wenn Sie mehrere Projekte mit demselben Node-Module-Inhalt haben, pnpm wird empfohlen. Dadurch wird verhindert, dass die Module in jedem Projekt heruntergeladen werden. Nach der Installation lautet die Antwort auf Ihre Frage:

pnpm up

-1voto

ztom Punkte 7571

Sie können ein Online-Tool verwenden https://pkgui.com/npm

Es editiert die package.json mit den Hauptversionen und erlaubt manuelle Änderungen per Dropdown.

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X