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

47voto

Long Tran Punkte 1439

Sie können eine der beiden Möglichkeiten ausprobieren:

  1. Veraltete Pakete prüfen

    npm outdated

    npm outdated

  2. Zu aktualisierende Pakete prüfen und auswählen

    npx npm-check -u

    npx npm-check -u

32voto

MikeMajara Punkte 922

Keine zusätzlichen Pakete, nur um zu überprüfen, ob sie veraltet sind, und um die zu aktualisieren, die es sind, genügt dieser Befehl:

npm install $(npm outdated | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@latest' | xargs echo)

25voto

Smit Patel Punkte 1578

NPM-Befehle zur Aktualisierung oder Behebung von Schwachstellen in einigen Manifestdateien für Abhängigkeiten

  • Verwenden Sie den folgenden Befehl, um zu prüfen, ob Ihre Node-Module veraltet sind oder Sicherheitslücken aufweisen.

    npm audit

  • Wenn eine Schwachstelle gefunden wird, verwenden Sie den folgenden Befehl, um alle Probleme zu beheben.

    npm audit fix

  • Wenn es bei Ihnen nicht funktioniert, versuchen Sie

    npm audit fix -f behebt dieser Befehl fast alle Sicherheitslücken. Einige Abhängigkeiten oder devDependencies sind gesperrt in paket-lock.json Datei, daher verwenden wir -f Flagge, um die Aktualisierung zu erzwingen.

  • Wenn Sie keinen Force-Audit-Fix verwenden möchten, können Sie die Versionen Ihrer Abhängigkeiten manuell korrigieren, indem Sie sie in paket-lock.json y paket.json Datei. Führen Sie dann

npm update && npm upgrade

8voto

addisonj Punkte 2046

Bei der Installation von npm-Paketen (sowohl global als auch lokal) können Sie eine bestimmte Version definieren, indem Sie die @version Syntax, um eine zu installierende Version zu definieren.

Mit anderen Worten: tun: npm install -g karma@0.9.2 stellt sicher, dass nur die Version 0.9.2 installiert wird und nicht neu installiert wird, wenn sie bereits existiert.

Als Ratschlag würde ich vorschlagen, globale npm-Installationen zu vermeiden, wo immer Sie können. Viele Leute wissen nicht, dass wenn eine Abhängigkeit eine bin-Datei definiert, diese nach ./node_modules/.bin/ installiert wird. Oft ist es sehr einfach, die lokale Version eines installierten Moduls zu verwenden, die in Ihrer package.json definiert ist. In der Tat fügen npm-Skripte die Datei ./node_modules/.bin zu Ihrem Pfad hinzu.

Als Beispiel ist hier eine package.json, die, wenn ich sie ausführe npm install && npm test installiert die Version von Karma, die in meiner package.json definiert ist, und verwendet diese Version von Karma (installiert unter node_modules/.bin/karma), wenn ich die test Drehbuch:

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

Dies hat den Vorteil, dass Ihre package.json die zu verwendende Version von Karma definiert und Sie diese Konfiguration nicht global auf Ihrer CI-Box halten müssen.

7voto

adiga Punkte 31403

Ab dem npm@5.0.0+ können Sie einfach tun:

npm update <package name>

Dies wird automatisch Aktualisierung der package.json Datei. Wir müssen die neueste Version nicht manuell aktualisieren und dann mit npm update <package name>

Sie können immer noch das alte Verhalten erhalten, indem Sie

npm update --no-save

( Referenz )

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