Frage Wie aktualisiere ich jede Abhängigkeit in package.json auf die neueste Version?


Ich habe package.json aus einem anderen Projekt kopiert und möchte nun alle Abhängigkeiten auf ihre neuesten Versionen übertragen, da dies ein neues Projekt ist und ich nichts dagegen habe, etwas zu reparieren, wenn es kaputt geht.

Was ist der einfachste Weg, dies zu tun?

Der beste Weg, den ich jetzt kenne, ist zu rennen npm info express version Aktualisieren Sie dann package.json manuell für jeden einzelnen. Es muss einen besseren Weg geben.

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

Ich bin jetzt ein Mitarbeiter an npm-check-updatesDas ist eine großartige Lösung für dieses Problem.


1429
2018-04-18 02:39


Ursprung


Antworten:


Sieht aus wie npm-check-updates Dies ist der einzige Weg, dies jetzt zu ermöglichen.

npm i -g npm-check-updates
ncu -u
npm install

Am npm <3.11:

Ändern Sie einfach die Version jeder Abhängigkeit in *, dann renne npm update --save. (Hinweis:  gebrochen in den letzten (3.11) Versionen von npm).

Vor:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

Nach:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

Natürlich ist dies der stumpfe Hammer der Aktualisierung von Abhängigkeiten. Es ist in Ordnung, wenn - wie Sie sagten - das Projekt leer ist und nichts kaputt gehen kann.

Wenn Sie andererseits in einem reiferen Projekt arbeiten, möchten Sie wahrscheinlich vor dem Upgrade überprüfen, ob in Ihren Abhängigkeiten keine Änderungen vorgenommen wurden.

Um zu sehen, welche Module veraltet sind, starte einfach npm outdated. Es listet alle installierten Abhängigkeiten auf, die neuere Versionen verfügbar haben.


1689
2018-04-18 03:35



npm-check-updates ist ein Dienstprogramm, das automatisch eine package.json mit der neueste Version aller Abhängigkeiten

sehen https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

863
2018-04-03 21:53



TLDR; (aktualisiert für neuere NPM-Versionen)

Die Dinge haben sich ein wenig verändert, seit diese Antworten ursprünglich geschrieben wurden.

npm 2+: npm outdated+npm update+npm shrinkwrap

Ältere npm: npm-check-updates Paket + npm shrinkwrap

Achte darauf, dass du deine Depots einziehst oder dass du mit einem toten Projekt fertig wirst. Ich habe ein Projekt neulich herausgezogen und es würde nicht laufen, weil meine Depots alle veraltet waren / aktualisiert / ein Durcheinander. Wenn ich schrumpfte, hätte npm genau das installiert, was ich brauchte.


Einzelheiten

Für Neugierige, die es bis hierher geschafft haben, empfehle ich folgendes:

Benutzen npm-check-updates oder npm outdated um die neuesten Versionen vorzuschlagen.

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

Dann mach eine saubere Installation (ohne die RM habe ich einige Abhängigkeit Warnungen)

$ rm -rf node_modules
$ npm install 

Zuletzt speichern Sie exakte Versionen auf npm-shrinkwrap.json mit npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Jetzt, npm install wird jetzt genaue Versionen in verwenden npm-shrinkwrap.json

Wenn Sie überprüfen npm-shrinkwrap.json In git werden alle Installationen die exakt gleichen Versionen verwenden.

Dies ist ein Weg, um von der Entwicklung (alle Updates, die ganze Zeit) zur Produktion überzugehen (niemand berührt nichts).


294
2018-06-02 22:29



Aktualisieren ein Abhängigkeit von seiner neuesten Version, ohne die Datei manuell öffnen zu müssen package.json und ändere es, du kannst rennen

npm install {package-name}@* {save flags?}

d.h.

npm install express@* --save

Als Referenz, npm-installieren


Wie vom Benutzer bemerkt Vespakoen Bei einer abgelehnten Bearbeitung ist es auch möglich, mehrere Pakete auf einmal zu aktualisieren:

npm install --save package-nave@* other-package@* whatever-thing@*

Er apportiert auch einen One-Liner für die Shell basierend auf npm outdated. Sehen die Bearbeitung für Code und Erklärung.


PS: Ich hasse es auch, manuell bearbeiten zu müssen package.json für solche Dinge;)


155
2018-04-30 14:51



Wenn Sie gerade benutzen Visual Studio-Code Als Ihre IDE ist dies eine lustige kleine Erweiterung, um die Aktualisierung zu machen package.json Ein Ein-Klick-Prozess.

Version Linse

enter image description here


50
2018-03-27 20:00



Dies funktioniert ab npm 1.3.15.

"dependencies": {
  "foo": "latest"
}

49
2018-01-21 22:35



  1. Benutzen * als die Version für die neuesten Versionen, einschließlich Unstable
  2. Benutzen latest als Versionsdefinition für die neueste stabile Version
  3. Ändern Sie die package.json mit genau der letzten stabilen Versionsnummer mit LatestStablePackages

Hier ist ein Beispiel:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

38
2018-01-23 03:45



Die einzige Einschränkung, die ich mit der besten Antwort oben gefunden habe, ist, dass es die Module auf die neueste Version aktualisiert. Dies bedeutet, dass es auf einen instabilen Alpha-Build aktualisiert werden könnte.

Ich würde das Dienstprogramm npm-check-updates verwenden. Meine Gruppe hat dieses Tool verwendet und es funktionierte effektiv durch die Installation der stabilen Updates.

Wie Etienne oben gesagt habe: installiere und laufe damit:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

34
2018-02-11 23:37



Um zu sehen, welche Pakete neuere Versionen verfügbar haben, verwenden Sie den folgenden Befehl:

npm outdated

nur aktualisieren ein Abhängigkeit verwenden Sie einfach den folgenden Befehl:

npm install yourPackage@latest --save

Beispielsweise:

Meine package.json Datei hat Abhängigkeit:

"@progress/kendo-angular-dateinputs": "^1.3.1",

dann sollte ich schreiben:

npm install @progress/kendo-angular-dateinputs@latest --save

24
2017-12-07 07:01



Hier ist eine grundlegende Regex, um semantische Versionsnummern zu vergleichen, so dass Sie sie schnell alle durch ein Sternchen ersetzen können.

Semantische Version Regex

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

Wie benutzt man

Wählen Sie in der JSON-Datei die Paketversionen aus, die Sie ersetzen möchten.

screenshot:select the text you want to replace

Geben Sie den obigen Regex ein und überprüfen Sie, ob der richtige Text gefunden wurde.

screenshot:input the semver regex above

Ersetzen Sie alle Übereinstimmungen durch ein Sternchen.

screenshot:replace package versions with an asterisk

Lauf npm update --save


21
2018-03-04 15:21



Ich mag wirklich wie Npm-Upgrade funktioniert. Es ist ein einfaches Befehlszeilendienstprogramm, das alle Ihre Abhängigkeiten durchläuft und Sie die aktuelle Version im Vergleich zur neuesten Version sehen und aktualisieren können, wenn Sie möchten.

Hier ist ein Screenshot von dem, was nach dem Ausführen passiert npm-upgrade in der Wurzel Ihres Projekts (neben der package.json Datei):

npm upgrade example

Für jede Abhängigkeit können Sie auswählen, ob Sie das Changelog aktualisieren, ignorieren, anzeigen oder den Prozess beenden möchten. Es hat bis jetzt sehr gut für mich funktioniert.


21
2017-08-22 20:08