Znajdź wersję zainstalowanego pakietu npm

2198

Jak znaleźć wersję zainstalowanego pakietu node.js / npm ?

Spowoduje to wydrukowanie samej wersji npm:

npm -v <package-name>

Wyświetla to tajemniczy błąd:

npm version <package-name>

Spowoduje to wydrukowanie wersji pakietu w rejestrze (tj. Najnowszej dostępnej wersji):

npm view <package-name> version

Jak uzyskać zainstalowaną wersję ?

Laurent Couvidou
źródło
5
W mojej instalacji „npm -v <nazwa_pakietu>” zgłasza wersję samej npm. Aby wyświetlić najnowszą wersję pakietu w rejestrze, stwierdziłem, że „npm view <nazwa_pakietu> wersja” wykonuje zadanie.
David A. Gray,
15
npm showpokazuje najnowsze w npm, niezainstalowane
Tsagana Nokhaeva

Odpowiedzi:

2576

npm listdla pakietów lokalnych lub npm list -gglobalnie zainstalowanych.

Możesz znaleźć wersję konkretnego pakietu, przekazując jego nazwę jako argument. Na przykład npm list gruntspowoduje:

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

Alternatywnie możesz po prostu uruchomić npm listbez podania nazwy pakietu jako argumentu, aby zobaczyć wersje wszystkich twoich pakietów:

├─┬ 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 

Możesz także dodać --depth=0argument do listy zainstalowanych pakietów bez ich zależności.

TheHippo
źródło
126
W systemach Mac i Linux fajnie jest dodać „| grep nazwa_modułu”, aby przefiltrować żądaną wersję modułu. Zwłaszcza gdy działa globalnie z -g. Na przykład: „lista npm -g | grep express”, aby uzyskać zainstalowaną wersję ekspresową.
guya
103
Jeśli chcesz konkretnego modułu, możesz uruchomić go jak npm list less-middlewareprzykład.
juanpaco
13
Według wskazówek @ guya dla systemów opartych na * nix, w systemie Windows można użyć programu PowerShell do podobnych wyników: | select-string module_namedo filtrowania modułu. Lub, jeśli używasz Git Bash (lub po prostu Bash, jeśli o to chodzi), możesz użyć grep.
Noel
15
Jeśli nie pamiętasz list, npm lsdziała również. W rzeczywistości wiele poleceń npm ma aliasy, a ponadto, jeśli wpiszesz podłańcuch polecenia, jeśli podłańcuch jest jednoznaczny, zadziała również; na przykład npm ls, npm list, npm liswszystkie są takie same. Jeśli chcesz uzyskać więcej informacji wyjściowych, spróbuj npm ll(ale prawdopodobnie chcesz --depth=0do nich dodać).
jakub.g
4
Dane wyjściowe nie są najlepsze do analizowania za pomocą skryptu. Czy naprawdę nie ma sposobu, aby uzyskać wyjście, które jest tylko wersją pakietu, bez konieczności robienia czegoś takiegonpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne,
867

Innym szybkim sposobem sprawdzenia, które pakiety są instalowane lokalnie i bez ich zależności, jest użycie:

npm list --depth=0

Co daje ci coś takiego

├── 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

Oczywiście to samo można zrobić na całym świecie npm list -g --depth=0.

Ta metoda jest bardziej przejrzysta w przypadku zainstalowania wielu pakietów.

Aby dowiedzieć się, które pakiety wymagają aktualizacji, możesz użyć npm outdated -g --depth=0.

Patrik Affentranger
źródło
14
daje mi to samo, co bez --depth
ygaradon
7
wygląda na to, że naprawili to w npm 1.4.6. Zobacz github.com/npm/npm/issues/4733
Howie
7
Działa świetnie z| grep <package_name>
Marco Prins
4
@ygaradon Prawidłowo, ale --depth=0sprawia, że ​​jest szybszy, ponieważ nie musi rekurencyjnie ładować zależności
Marco Prins
npm list -g --depth=0dla modułów listy zainstalowanych globalnie
EdgeDev
219

npm view <package> version - zwraca najnowszą dostępną wersję na opakowaniu.

npm list --depth=0 - zwraca wersje wszystkich zainstalowanych modułów bez zależności.

npm list - zwraca wersje wszystkich modułów i zależności.

I na koniec, aby uzyskać wersję węzła: node -v

Salvador Dali
źródło
16
zobacz npm <pakiet> wersja, przechodzi do zdalnego rejestru npm, nie lokalnego systemu plików ...
Alexander Mills
@AlexanderMills Prawda, ale umieszczenie go tutaj pozwala uniknąć kolejnego wyszukiwania tego. Btw npm v, npm infoa npm showto wszystko alias npm view.
CPHPython
85
npm info YOUR_PACKAGE version

na przykład

npm info grunt version
0.4.5
David Beckwith
źródło
104
To nie pokazuje zainstalowanej wersji pakietu, tylko pokazuje najnowszą dostępną wersję.
Tanner Semerad
Zgadzam się z @ tanner-semerad. Zameldowałem się w Dokumentach npm, aby to wyjaśnić. npm infojest aliasem npm viewiw Dokumentach npm , znajdziesz to stojące: To polecenie pokazuje dane o pakiecie i wypisuje je do strumienia, do którego odwołuje się konfiguracja outfd, domyślnie jest to stdout. [...] Domyślną wersją jest „najnowsza”, jeśli nie jest określona. W ten sposób głosuję w dół.
dannydedog
Pokazuje najnowszą dostępną wersję, nie najnowszą zainstalowaną. Doceniony.
lofihelsinki
2
npm info YOUR_PACKAGE versionJedyny, który działał :)
GOXR3PLUS
to samo, „npm info YOUR_PACKAGE version” Jedyny, który zadziałał
Jonas
63

Właśnie użyłem

npm list | grep <package name>

i działało świetnie

W systemie Windows uruchom:

npm list | find <package name>

W programie PowerShell:

npm list | sls <package name>
chrissavage
źródło
3
findwersja nie działa dla mnie - nawet z cytowanym ciągiem, ale PowerShell działa dobrze
fiat
4
Użytkownicy systemu Windows: npm list -g --depth=0 |find "<package name>" Zwróć uwagę na podwójne cudzysłowy
robe007
56

Z katalogu głównego pakietu wykonaj:

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

EDYCJA : (więc musisz cdwejść do katalogu domowego modułu, jeśli jeszcze go tam nie ma. Jeśli zainstalowałeś moduł npm install, to będzie poniżej node_modules/<module_name>)

EDYCJA 2 : zaktualizowana zgodnie z odpowiedzią @ jeff-dickey

Fergie
źródło
Miły! Trochę szybciej niż uruchamianie „listy npm”, jak sugerują inne odpowiedzi (~ 1s zamiast ~ 20s) - przynajmniej wtedy, gdy masz gotowy fragment kodu! (naprawdę powinna to być wtyczka npm ...)
Venryx
1
lubnode -p "require('./package.json').version"
Jeff Dickey,
2
Nie zostanie zainstalowana rzeczywista wersja, jeśli istnieje ogranicznik zasięgu, taki jak ^ ~
geedew
21

Dla pakietów lokalnych

npm list --depth=0

Dla pakietów globalnych

npm list  -g --depth=0
Farhan Yaseen
źródło
21

Łącząc niektóre z powyższych odpowiedzi, uzyskujemy bardzo proste i super szybkie wyszukiwanie.
Uruchom z katalogu głównego projektu. Nie musisz cdwchodzić do żadnego folderu, tylko 1 linia:

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

JoshuaDavid
źródło
21

Możesz również sprawdzić wersję za pomocą tego polecenia:

npm info <package name> version

Sobin Sunny
źródło
29
Ponownie pokazuje najnowszą wersję dostępną w rejestrze pakietów, a nie wersję aktualnie zainstalowanego pakietu.
David Ferenczy Rogožan,
@DawidFerenczy Zgadzam się z jego wyświetlaniem tylko najnowszej wersji, np. Npm info httpaction
Nitin.
16

Jeśli zgadzasz się zainstalować jq , możesz użyć wyjścia JSON z npm list.

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

lub, jeśli chcesz być gadatliwy

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

Na przykład:

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

Ponadto format JSON jest nieco inny dla pakietów globalnych, więc musisz zmienić zapytanie.

Na przykład:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
Benoit Blanchon
źródło
14

Jeśli masz dość odwagi (i nodezainstalowałeś), zawsze możesz zrobić coś takiego:

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

Spowoduje to wydrukowanie wersji bieżącego pakietu. Możesz go również zmodyfikować, aby oszalał, na przykład:

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

Spowoduje to wydrukowanie wersji WHATEVER_PACKAGE_NAMEpakietu, którą widzi npm version.

KundraLaci
źródło
node -e "console.log(require('./package.json').version);"
papiro
12

Aby zobaczyć wszystkie zainstalowane pakiety lokalnie lub globalnie, użyj następujących poleceń:

  1. npm listdla pakietów lokalnych lub npm list -gglobalnie zainstalowanych.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v
Shekhar Tyagi
źródło
10

Spróbuj z:

npm list --depth 1 --global packagename
Eduardo Cuomo
źródło
10

Zbudowałem narzędzie, które właśnie to robi - qnm

qnm - Proste narzędzie CLI do przeszukiwania node_moduleskatalogu.

Zainstaluj za pomocą:

npm i --global qnm

i biegnij:

qnm [module]

na przykład:

> qnm lodash

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

Która oznacza, że mamy lodashzainstalowany w katalogu głównego node_modulesi dwóch innych egzemplarzach w node_modulesz cli-table2a karma.

Jest naprawdę szybki i ma kilka ciekawych funkcji, takich jak uzupełnianie tabulatorów i wyszukiwanie dopasowania.

Ran Yitzhaki
źródło
9

Aby wyświetlić listę pakietów lokalnych z numerem wersji:

npm ls --depth=0

Aby wyświetlić listę pakietów globalnych z numerem wersji:

npm ls -g --depth=0

kavigun
źródło
8

Można użyć npm widok wersji [moduł] , npm informacje o wersji [moduł] , npm pokaż wersję [moduł] lub npm v wersję [moduł] sprawdzić wersję na Zainstalowany moduł npm.

Załóżmy, że moją wersją modułu gruntu jest 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
źródło
15
Wszystkie pokazują najnowszą dostępną wersję, a nie aktualnie zainstalowaną
sth
8

npm list --depth 0 to polecenie, które pokazuje wszystkie biblioteki z wersją, ale możesz jej użyć npm-check

npm-check jest dobrą biblioteką do zarządzania wszystkimi tymi rzeczami związanymi ze zdarzeniem systemu wersji, pokaże wersje bibliotek, aktualizację nowej wersji, nieużywaną wersję i wiele innych.

aby go zainstalować, po prostu uruchom

npm install -g npm-check

i po prostu biegnij

npm-check

sprawdź zrzut ekranu, pokazuje wszystko na temat wersji pakietu, aktualizacji nowej wersji i nieużywanej wersji.

wprowadź opis zdjęcia tutaj

Działa także globalnie. Spróbuj. Mam nadzieję, że komuś to pomoże.

Mahendra Pratap
źródło
6

Oto przenośny uniksowy (korzystający z grepi sed) liner, który zwraca ciąg wersji globalnie zainstalowanego pakietu npm ( zamiast tego usuń gz, -pgaby zapytać o pakiety lokalne):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • że npm llwyprowadza parsowalnym ciąg sformatowane tak: /usr/lib/node_modules/npm:[email protected]:;
  • greppolecenie wyodrębnia wartości od @i :włącznie;
  • sedpolecenie usuwa okoliczne znaki.
Wjordan
źródło
6

Dodałem to do mojego .bashrc

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

Teraz wszystko, co muszę zrobić, to wpisać:

  • npmv dla wersji npm np:NPM version is: 4.2.0
  • npmv <nazwa-pakietu> dla wersji lokalnej, np .:0.8.08
  • npmv <nazwa-pakietu> g dla wersji globalnej np .:0.8.09
  • npmv <nazwa-pakietu> l dla najnowszej wersji np .:0.8.10

Uwaga -d przy poleceniu cięcia oznacza delimit, po którym następuje @, a następnie f oznacza pole 2 oznacza drugie pole, ponieważ będzie jedna strona symbolu @.

JGFMK
źródło
5

Możesz spróbować: npm show {package} versionpokazuje najnowszą wersję pakietu. A jeśli twój pakiet jest nieaktualny, npm outdatedpokaże go z informacją o wersji.

Aliaksei
źródło
2
OP pytał o wersję aktualnie zainstalowanego pakietu, a nie o najnowszą wersję dostępną w rejestrze pakietów.
David Ferenczy Rogožan,
5

To proste pytanie i powinno mieć prostszą odpowiedź niż to, co widzę powyżej.

Aby zobaczyć zainstalowane pakiety npm wraz z ich wersją, polecenie npm ls --depth=0wyświetla domyślnie to, co jest zainstalowane lokalnie. Aby zobaczyć zainstalowane globalnie pakietów, dodaj -globalargumentu npm ls --depth=0 -global.

--depth=0 zwraca listę zainstalowanych pakietów bez ich zależności, co chcesz robić przez większość czasu.

ls to nazwa polecenia, a list jest aliasem dla ls.

zumafra
źródło
3

Uzyskać dostęp do package.json

Możesz uzyskać dostęp do pakietu package.jsonlub bower.jsonza pomocą:

notepad ./node_modules/:packageName/package.json

Zostanie otwarte okno, package.jsonw notepadktórym znajduje się jeden version numberz elementów :packageNamezawartych wcommand .

Na przykład :

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

Powodzenia.

Akash
źródło
6
Nie tylko istnieją znacznie łatwiejsze sposoby, aby to zrobić, ale wersja podana w pliku package.json może nie być wersją zainstalowaną z powodu notacji zakresu semver. Oznacza to, że zależność można określić jako wersję ^ 1.3.0, ale może to oznaczać wszystko od wersji 1.3.0 do 1.99.99
Isochronous
3

Możemy użyć npm view any-promise (nazwa twojego modułu) -v

Nitin.
źródło
1
Pokazuje najnowszą dostępną wersję, a nie wersję w katalogu lokalnym.
christianbundy,
@christianbundy możesz użyć listy npm --depth = 0 | grep uuid
Nitin.
Musiałem użyć npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, ale tak, działa tak długo, jak długo jest to zależność najwyższego poziomu. Nie sądzę jednak, aby zawsze tak było, w oparciu o pierwotne pytanie.
christianbundy,
2

lista npm nazwa-pakietu podaje aktualnie zainstalowaną wersję

Nandhiny Durai
źródło
0

To bardzo proste .. Wystarczy wpisać poniżej linii

npm view < package-name > version

** Przykład **

npm view redux version

Mam wersję 7.2.0 redux

Daksh Patel
źródło