Suchen Sie die Version eines installierten npm-Pakets

2199

Wie finde ich die Version eines installierten node.js / npm- Pakets ?

Dies druckt die Version von npm selbst:

npm -v <package-name>

Dies gibt einen kryptischen Fehler aus:

npm version <package-name>

Dadurch wird die Paketversion in der Registrierung gedruckt (dh die neueste verfügbare Version):

npm view <package-name> version

Wie bekomme ich die installierte Version ?

Laurent Couvidou
quelle
5
In meiner Installation gibt "npm -v <Paketname>" die Version von npm selbst an. Um die neueste Version eines Pakets in der Registrierung aufzulisten, habe ich festgestellt, dass "npm view <Paketname> version" den Job erledigt.
David A. Gray
15
npm showzeigt die neueste in npm, nicht installiert
Tsagana Nokhaeva

Antworten:

2577

npm listfür lokale Pakete oder npm list -gfür global installierte Pakete.

Sie können die Version eines bestimmten Pakets finden, indem Sie dessen Namen als Argument übergeben. Zum Beispiel npm list gruntergibt sich:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

Alternativ können Sie einfach ausführen, npm listohne einen Paketnamen als Argument zu übergeben, um die Versionen aller Ihrer Pakete anzuzeigen:

├─┬ cli-color@0.1.6 
 └── es5-ext@0.7.1 
├── coffee-script@1.3.3 
├── less@1.3.0 
├─┬ sentry@0.1.2 
 ├── file@0.2.1 
 └── underscore@1.3.3 
└── uglify-js@1.2.6 

Sie können auch --depth=0Argumente hinzufügen , um installierte Pakete ohne deren Abhängigkeiten aufzulisten.

TheHippo
quelle
126
Unter Mac und Linux ist es schön, "| grep module_name" hinzuzufügen, um die gewünschte Modulversion zu filtern. Besonders wenn Sie global mit -g arbeiten. Beispiel: "npm list -g | grep express", um die installierte Express-Version abzurufen.
Guya
103
Wenn Sie ein bestimmtes Modul möchten, können Sie es wie npm list less-middlewareals Beispiel ausführen .
Juanpaco
13
Per @ guyas Tipp für * nix-basierte Systeme: Unter Windows können Sie PowerShell für ähnliche Ergebnisse verwenden: | select-string module_nameum das Modul zu filtern. Oder wenn Sie Git Bash (oder auch nur Bash) verwenden, können Sie verwenden grep.
Noel
15
Wenn Sie sich nicht erinnern können list, npm lsfunktioniert auch. Tatsächlich haben viele npm-Befehle Aliase. Wenn Sie einen Teilstring eines Befehls eingeben und dieser Teilstring eindeutig ist, funktioniert er auch. zum Beispiel npm ls, npm list, npm lissind alle gleich. Wenn Sie eine ausführlichere Ausgabe wünschen, versuchen Sie es npm ll(aber wahrscheinlich möchten Sie es --depth=0hinzufügen).
Jakub.g
4
Die Ausgabe ist nicht die beste zum Parsen mit einem Skript. Gibt es wirklich keine Möglichkeit, eine Ausgabe zu erhalten, die nur die Paketversion ist, ohne etwas tun zu müssen wienpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne
867

Eine andere schnelle Möglichkeit, herauszufinden, welche Pakete lokal und ohne ihre Abhängigkeiten installiert sind, ist die Verwendung von:

npm list --depth=0

Welches gibt Ihnen so etwas wie

├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0

Offensichtlich kann das gleiche global mit gemacht werden npm list -g --depth=0.

Diese Methode ist klarer, wenn Sie viele Pakete installiert haben.

Um herauszufinden, welche Pakete aktualisiert werden müssen, können Sie verwenden npm outdated -g --depth=0.

Patrik Affentranger
quelle
14
Es gibt mir das gleiche wie ohne die
Tiefe
7
es scheint, dass sie es in npm 1.4.6 behoben haben. Siehe github.com/npm/npm/issues/4733
Howie
7
Funktioniert hervorragend mit| grep <package_name>
Marco Prins
4
@ygaradon Richtig, aber das --depth=0macht es schneller, weil es nicht rekursiv Abhängigkeiten laden muss
Marco Prins
npm list -g --depth=0für weltweit installierte
Listenmodule
219

npm view <package> version - gibt die neueste verfügbare Version des Pakets zurück.

npm list --depth=0 - Gibt Versionen aller installierten Module ohne Abhängigkeiten zurück.

npm list - Gibt Versionen aller Module und Abhängigkeiten zurück.

Und zum Schluss noch die Knotenversion: node -v

Salvador Dali
quelle
16
npm view <package> version, geht zur npm remote registry, nicht zum lokalen Dateisystem ...
Alexander Mills
@AlexanderMills Stimmt, aber wenn Sie es hier haben, vermeiden Sie eine weitere Suche danach. Btw, npm v, npm infound npm showsind alle Alias npm view.
CPHPython
85
npm info YOUR_PACKAGE version

z.B

npm info grunt version
0.4.5
David Beckwith
quelle
105
Hier wird nicht die installierte Paketversion angezeigt, sondern nur die neueste verfügbare Version.
Tanner Semerad
Stimmen Sie mit @ tanner-semerad überein. Ich habe in Docs of npm eingecheckt, um dies zu klären. npm infoist ein Alias ​​für npm viewund in Docs of npm finden Sie Folgendes : Dieser Befehl zeigt Daten zu einem Paket an und druckt sie in den Stream, auf den die outfd-Konfiguration verweist, die standardmäßig stdout ist. [...] Die Standardversion ist "aktuell", wenn nicht angegeben. So stimme ich ab.
Dannydedog
Zeigt die neueste verfügbare Version an, nicht die zuletzt installierte. Abgestimmt.
Lofihelsinki
2
npm info YOUR_PACKAGE versionDer einzige, der funktioniert hat :)
GOXR3PLUS
Gleiche, 'npm info YOUR_PACKAGE version' Die einzige, die funktioniert hat
Jonas
63

Ich habe es gerade benutzt

npm list | grep <package name>

und es hat super funktioniert

Unter Windows laufen:

npm list | find <package name>

Führen Sie in PowerShell Folgendes aus:

npm list | sls <package name>
chrissavage
quelle
3
findVersion funktioniert nicht für mich - auch mit zitierter Zeichenfolge, aber Powershell funktioniert gut
Fiat
4
Für Windows-Benutzer: npm list -g --depth=0 |find "<package name>" Beachten Sie die doppelten Anführungszeichen
robe007
56

Aus dem Stammverzeichnis des Pakets:

node -p "require('./package.json').version"

BEARBEITEN : (Sie müssen also cdin das Home-Verzeichnis des Moduls gehen, wenn Sie noch nicht dort sind. Wenn Sie das Modul mit installiert haben npm install, befindet es sich unter node_modules/<module_name>)

EDIT 2 : aktualisiert gemäß Antwort von @ jeff-dickey

Fergie
quelle
Nett! Ziemlich schneller als das Ausführen von "npm list", wie die anderen Antworten vermuten lassen (~ 1s statt ~ 20s) - zumindest wenn Sie dieses Code-Snippet bereit haben! (Es sollte wirklich ein npm Plugin geben, um dies zu tun ...)
Venryx
1
odernode -p "require('./package.json').version"
Jeff Dickey
2
Dies wird nicht die aktuelle Version installiert, wenn es einen Bereichsbegrenzer wie ^ ~
geedew
21

Für lokale Pakete

npm list --depth=0

Für globale Pakete

npm list  -g --depth=0
Farhan Yaseen
quelle
21

Wenn Sie einige der oben genannten Antworten kombinieren, erhalten Sie eine supereinfache und superschnelle Suche.
Vom Projektstamm ausführen. Keine Notwendigkeit cdin einen Ordner, nur 1 Zeile:

node -p "require('SOMEPACKAGE/package.json').version"

Joshua David
quelle
21

Sie können die Version auch mit diesem Befehl überprüfen:

npm info <package name> version

Sobin Sunny
quelle
29
Auch hier wird die neueste in der Paketregistrierung verfügbare Version angezeigt, nicht die Version des aktuell installierten Pakets.
David Ferenczy Rogožan
@DawidFerenczy Stimmen Sie mit seiner Show nur der neuesten Version wie npm info httpaction
Nitin zu.
16

Wenn Sie der Installation von jq zustimmen , können Sie die JSON-Ausgabe von verwenden npm list.

npm -j ls <package-name> | jq -r .version

oder, wenn Sie ausführlich sein wollen

npm --json list <package-name> | jq --raw-output '.version'

Zum Beispiel:

$ npm -j ls ghost | jq -r .version
0.4.2

Außerdem unterscheidet sich das JSON-Format für globale Pakete geringfügig, sodass Sie die Abfrage ändern müssen.

Zum Beispiel:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
Benoit Blanchon
quelle
14

Wenn Sie mutig genug sind (und nodeinstalliert haben), können Sie immer Folgendes tun:

echo "console.log(require('./package.json').version);" | node

Dadurch wird die Version des aktuellen Pakets gedruckt. Sie können es auch so ändern, dass es verrückt wird:

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

Dadurch wird die Version des WHATEVER_PACKAGE_NAMEPakets gedruckt, die von angezeigt wird npm version.

KundraLaci
quelle
node -e "console.log(require('./package.json').version);"
Papiro
12

Verwenden Sie die folgenden Befehle, um alle installierten Pakete lokal oder global anzuzeigen:

  1. npm listfür lokale Pakete oder npm list -gfür global installierte Pakete.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v
Shekhar Tyagi
quelle
10

Versuche es mit:

npm list --depth 1 --global packagename
Eduardo Cuomo
quelle
10

Ich habe ein Tool erstellt, das genau das tut - qnm

qnm - Ein einfaches CLI-Dienstprogramm zum Abfragen des node_modulesVerzeichnisses.

Installieren Sie es mit:

npm i --global qnm

und Renn:

qnm [module]

zum Beispiel:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
 └── 3.10.1
└─┬ karma
  └── 3.10.1

Das heißt, wir haben lodashim Stammverzeichnis der node_modulesund zwei weitere Kopien im node_modulesvon cli-table2und installiert karma.

Es ist sehr schnell und hat einige nette Funktionen wie Tab-Vervollständigung und Match-Suche.

Ran Yitzhaki
quelle
9

Um lokale Pakete mit der Versionsnummer aufzulisten, verwenden Sie:

npm ls --depth=0

Um globale Pakete mit der Versionsnummer aufzulisten, verwenden Sie:

npm ls -g --depth=0

Kavigun
quelle
8

Sie können mit npm Ansicht [module] Version , npm info [module] Version , npm show [module] Version oder npm v [Modul] Version der Version auf einem installierte npm Modul überprüfen.

Nehmen wir an, meine Grunzmodulversion ist 0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5
Sérgio
quelle
15
Alle zeigen die neueste verfügbare Version, nicht die aktuell installierte Version
etw
8

npm list --depth 0 ist der Befehl, der alle Bibliotheken mit Version anzeigt, die Sie jedoch verwenden können npm-check

npm-check ist eine gute Bibliothek, um all diese Dinge in Bezug auf das Versionssystemereignis zu verwalten. Es zeigt Bibliotheksversionen, neue Versionsaktualisierungen und nicht verwendete Versionen und vieles mehr.

Um es zu installieren, laufen Sie einfach

npm install -g npm-check

und einfach laufen

npm-check

Überprüfen Sie den Screenshot, in dem alles über die Paketversion, das neue Versionsupdate und die nicht verwendete Version angezeigt wird.

Geben Sie hier die Bildbeschreibung ein

Es funktioniert auch global. Versuche es. Hoffe das hilft jemandem.

Mahendra Pratap
quelle
7

Hier ist ein portabler Unix-Einzeiler (mit grepund sed), der die Versionszeichenfolge eines global installierten npm-Pakets zurückgibt (entfernen Sie stattdessen das gvon -pg, um lokale Pakete abzufragen):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • das npm llgibt eine analysierbare Zeichenfolge aus, die wie folgt formatiert ist : /usr/lib/node_modules/npm:[email protected]:;
  • der grepBefehl extrahiert den Wert zwischen @und :einschließlich;
  • Der sedBefehl entfernt die umgebenden Zeichen.
wjordan
quelle
6

Ich habe dies zu meiner .bashrc hinzugefügt

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

Jetzt muss ich nur noch Folgendes eingeben:

  • npmv für die Version von npm zB:NPM version is: 4.2.0
  • npmv <Paketname> für die lokale Version, z.0.8.08
  • npmv <Paketname> g für globale Version, z.0.8.09
  • npmv <Paketname> l für die neueste Version, z.0.8.10

Hinweis: -d on cut Befehl bedeutet Begrenzung durch, gefolgt von @, dann bedeutet f Feld, 2 bedeutet zweites Feld, da sich auf beiden Seiten des @ -Symbols eine befindet.

JGFMK
quelle
5

Sie können dies versuchen: npm show {package} versionZeigt die neueste Paketversion an. Und wenn Ihr Paket veraltet ist, npm outdatedwird es mit Versionsinformationen angezeigt.

Aliaksei
quelle
2
Das OP fragte nach der Version des aktuell installierten Pakets, nicht nach der neuesten Version, die in der Paketregistrierung verfügbar ist.
David Ferenczy Rogožan
5

Dies ist eine einfache Frage und sollte eine einfachere Antwort haben als das, was ich oben sehe.

Um die installierten npm-Pakete mit ihrer Version anzuzeigen, lautet der Befehl npm ls --depth=0standardmäßig, was lokal installiert wird. Fügen Sie das -globalArgument hinzu, um die global installierten Pakete anzuzeigen : npm ls --depth=0 -global.

--depth=0 Gibt eine Liste der installierten Pakete ohne deren Abhängigkeiten zurück, was Sie die meiste Zeit tun möchten.

lsist der Name des Befehls und list ein Alias für ls.

zumafra
quelle
3

Greife auf ... zu package.json

Sie können auf das package.jsonoder bower.jsondes Pakets zugreifen mit:

notepad ./node_modules/:packageName/package.json

Dies öffnet das, package.jsonin notepaddem das version numbervon :packageNameIhnen enthalten ist command.

Beispielsweise :

notepad ./node_modules/vue-template-compiler/package.json

Viel Glück.

Akash
quelle
6
Es gibt nicht nur viel einfachere Möglichkeiten, dies zu tun, die Version, die Sie in Ihrem package.json angegeben haben, ist aufgrund von Semver-Range-Notationen möglicherweise nicht die installierte Version. Das heißt, eine Abhängigkeit kann als Version ^ 1.3.0 angegeben werden, aber das kann alles von Version 1.3.0 bis 1.99.99 bedeuten
Isochronous
3

Wir können npm view any-versprechen (Ihr Modulname) -v verwenden

Nitin.
quelle
1
Hier wird die neueste verfügbare Version angezeigt, nicht die Version im lokalen Verzeichnis.
Christianbundy
@christianbundy Sie können npm list --depth = 0 | verwenden grep uuid
Nitin.
Ich musste verwenden npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, aber ja, das funktioniert, solange es sich um eine Abhängigkeit auf oberster Ebene handelt. Ich denke jedoch nicht, dass dies immer der Fall ist, basierend auf der ursprünglichen Frage.
Christianbundy
2

Der Paketname der npm-Liste gibt die aktuell installierte Version an

Nandhiny Durai
quelle
0

Es ist sehr einfach. Geben Sie einfach unter der Zeile ein

npm view < package-name > version

** Beispiel **

npm view redux version

Ich habe Version 7.2.0 von Redux

Daksh Patel
quelle