Знайдіть версію встановленого пакету npm


2198

Як знайти версію встановленого пакета node.js / npm ?

Це надрукує саму версію npm:

npm -v <package-name>

Це надрукує загальну помилку:

npm version <package-name>

Це надрукує версію пакета в реєстрі (тобто останню доступну версію):

npm view <package-name> version

Як отримати встановлену версію ?


5
У моїй установці "npm -v <ім'я пакета>" повідомляє про версію npm, про себе. Для того, щоб перерахувати останню версію пакета в реєстрі, я виявив, що "npm view <package-name> version" виконує завдання.
Девід А. Грей

15
npm showпоказує останнє в npm, не встановлено
Tsagana Nokhaeva

Відповіді:


2576

npm listдля локальних пакетів або npm list -gдля глобально встановлених пакетів.

Ви можете знайти версію певного пакету, передавши його ім'я як аргумент. Наприклад, npm list gruntце призведе до:

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

Крім того, ви можете просто запустити, npm listне передаючи ім'я пакета як аргумент, щоб побачити версії всіх ваших пакетів:

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

Ви також можете додати --depth=0аргумент до списку встановлених пакетів без їх залежностей.


126
На mac та linux приємно додати "| grep module_name", відфільтрувати потрібну версію модуля. Особливо, коли працює в глобальному масштабі з -g. Наприклад: "npm list -g | grep express", щоб отримати встановлену експрес-версію.
guya

103
Якщо ви хочете певного модуля, ви можете запустити його як npm list less-middlewareприклад.
juanpaco

13
Порада Per @ guya для систем на базі * nix, у Windows ви можете використовувати PowerShell для подібних результатів: | select-string module_nameдля фільтрації модуля. Або якщо ви використовуєте Git Bash (або просто Bash для цього питання), ви можете використовувати grep.
Ноель

15
Якщо ви не можете згадати list, npm lsтакож працює. Насправді, багато команд npm мають псевдоніми, і, крім того, якщо ви введете підрядку команди, якщо ця підрядка однозначна, вона також буде працювати; наприклад npm ls, npm list, npm lisвсе те ж саме. Якщо ви хочете більше багатослівного виводу, спробуйте npm ll(але, ймовірно, ви хочете --depth=0додати його).
jakub.g

4
Вихід не найкращий для розбору сценарію. Невже немає способу отримати вихід, який є лише версією пакету, не роблячи щось на кшталтnpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne

867

Ще одним швидким способом з’ясувати, які пакунки встановлені локально та без їх залежностей, є використання:

npm list --depth=0

Що дає тобі щось подібне

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

Очевидно, те саме можна зробити і в усьому світі npm list -g --depth=0.

Цей спосіб зрозуміліший, якщо ви встановили багато пакетів.

Щоб дізнатися, які пакунки потрібно оновити, ви можете використовувати npm outdated -g --depth=0.


14
це дасть мені те саме, що і без --depth
ygaradon

7
здається, вони виправили це в npm 1.4.6. Дивіться github.com/npm/npm/issues/4733
Howie

7
Чудово працює з| grep <package_name>
Марко Прінс

4
@ygaradon Правильно, але --depth=0робить це швидше, тому що йому не потрібно рекурсивно завантажувати залежності
Marco Prins

npm list -g --depth=0для модулів списку, встановлених у всьому світі
EdgeDev

219

npm view <package> version - повертає останню доступну версію пакету.

npm list --depth=0 - повертає версії всіх встановлених модулів без залежностей.

npm list - повертає версії всіх модулів та залежностей.

І нарешті, щоб отримати версію вузла: node -v


16
npm view <package> версія, переходить до віддаленого реєстру npm, а не локальної файлової системи ...
Alexander Mills

@AlexanderMills Правда, але наявність цього тут уникає іншого пошуку. До речі, npm v, npm infoі npm showвсе псевдонім npm view.
CPHPython

85
npm info YOUR_PACKAGE version

напр

npm info grunt version
0.4.5

104
Це не відображає встановлену версію пакета, вона лише показує останню доступну версію.
Таннер Семерад

Погодьтеся з @ tanner-semerad. Я зареєструвався в Документах npm, щоб очистити його. npm infoПсевдонім для npm viewта в Документах npm ви знайдете, що стоїть: Ця команда показує дані про пакет і друкує його в потік, на який посилається конфігуратор outfd, який за замовчуванням встановлює stdout. [...] Версія за замовчуванням є "останньою", якщо вона не визначена. Таким чином я голосую проти.
dannydedog

Показує найновішу доступну версію, не останню встановлену. Захищений.
lofihelsinki

2
npm info YOUR_PACKAGE versionЄдиний, хто працював :)
GOXR3PLUS

те саме, "npm info YOUR_PACKAGE версія" Єдиний, хто працював
Jonas

63

Я просто використовував

npm list | grep <package name>

і це працювало чудово

У Windows працює:

npm list | find <package name>

У PowerShell запустіть:

npm list | sls <package name>

3
findверсія для мене не працює - навіть із цитованим рядком, але паттерн працює добре
фіат

4
Для користувачів Windows: npm list -g --depth=0 |find "<package name>" Зверніть увагу на подвійні цитати
robe007

56

З кореня пакета зробіть:

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

EDIT : (тому вам потрібно cdувійти в домашній каталог модуля, якщо ви ще не є. Якщо ви встановили модуль npm install, тоді він буде під node_modules/<module_name>)

EDIT 2 : оновлено відповідно до відповіді від @ jeff-dickey


Приємно! Трохи швидше, ніж запускати "npm list", як підказують інші відповіді (~ 1s замість ~ 20s) - принаймні, коли ви готовий цей фрагмент коду! (дійсно повинен бути плагін npm для цього ...)
Venryx

1
абоnode -p "require('./package.json').version"
Джефф Дікі

2
Фактична версія не буде встановлена, якщо є роздільник діапазону, наприклад ^ ~
geedew


21

Поєднання деяких з вищезазначених відповідей і забезпечує надзвичайно простий і надшвидкий пошук.
Запустити з кореня проекту. Не потрібно cdвходити в жодну папку, лише 1 рядок:

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


21

Ви також можете перевірити версію за допомогою цієї команди:

npm info <package name> version


29
Знову ж таки, вона показує останню версію, доступну в реєстрі пакунків, а не версію встановленого на даний момент пакета.
Девід Ференчі Рогожан

@DawidFerenczy Погодьтеся з його останньою версією шоу, наприклад, npm info httpaction
Nitin.

16

Якщо ви погоджуєтесь встановлювати jq , ви можете використовувати вихід JSON npm list.

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

або, якщо ви хочете бути багатослівним

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

Наприклад:

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

Крім того, формат JSON дещо відрізняється для глобальних пакетів, тому вам потрібно буде змінити запит.

Наприклад:

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

14

Якщо ви досить сміливі (і nodeвстановили), ви завжди можете зробити щось на кшталт:

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

Це надрукує версію поточного пакета. Ви також можете змінити його, щоб звести з розуму, як це:

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

Це надрукує версію WHATEVER_PACKAGE_NAMEпакета, яку бачить npm version.


node -e "console.log(require('./package.json').version);"
папіро

12

Щоб переглянути всі встановлені пакети локально чи глобально, скористайтеся цими командами:

  1. npm listдля локальних пакетів або npm list -gдля глобально встановлених пакетів.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


10

Я створив інструмент, який робить саме це - qnm

qnm - Проста утиліта CLI для запитів у node_modulesкаталог.

Встановіть його за допомогою:

npm i --global qnm

і біжи:

qnm [module]

наприклад:

> qnm lodash

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

Які засоби ми lodashвстановили в корені node_modulesі два інших примірників на node_modulesз cli-table2і karma.

Це дуже швидко та має деякі приємні функції, такі як заповнення вкладок та пошук відповідностей.


9

Для переліку локальних пакетів з номером версії використовуйте:

npm ls --depth=0

Для переліку глобальних пакетів з номером версії використовуйте:

npm ls -g --depth=0


8

Ви можете використовувати версію npm view [module] , npm info [module] version , npm show [module] version або npm v [module] version для перевірки версії на встановленому модулі npm.

Припустимо, версія мого грунтового модуля - 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

15
Усі вони демонструють найновішу доступну версію, а не встановлену на даний момент версію
sth

8

npm list --depth 0 це команда, яка показує всі бібліотеки з версією, але ви можете використовувати npm-check

npm-check - це хороша бібліотека для управління всіма тими речами, що стосуються події системи версій, вона покаже версії бібліотек, оновлення нової версії та невикористану версію та багато іншого.

щоб встановити його просто запустіть

npm install -g npm-check

і просто бігати

npm-check

перевірте скріншот, на якому відображається все про версію пакета, оновлення нової версії та невикористану версію.

введіть тут опис зображення

Це працює і в усьому світі. спробувати. Сподіваюся, це допоможе комусь.


6

Ось портативний Unix (використовуючи grepта sed) однокласник, який повертає рядок версії глобально встановленого пакету npm (видаліть gз, -pgщоб замість запиту локальних пакетів):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • то npm llвиводить розпізнавати рядок , відформатовані як: /usr/lib/node_modules/npm:npm@2.14.8:;
  • grepкоманда витягує значення між @і :, включно;
  • sedкоманда видаляє навколишні символи.

6

Я додав це до свого .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

Тепер все, що мені потрібно зробити, це набрати:

  • npmv для версії npm, наприклад:NPM version is: 4.2.0
  • npmv <ім'я пакета> для локальної версії, наприклад:0.8.08
  • npmv <ім'я пакета> g для глобальної версії, наприклад:0.8.09
  • npmv <ім'я пакета> l для останньої версії, наприклад:0.8.10

Примітка -d у команді cut означає обмеження, а потім - @, тоді f означає поле, 2 означає друге поле, оскільки буде одна сторона символу @.


5

Ви можете спробувати це: npm show {package} versionпоказує останню версію пакета. А якщо ваш пакет застарів, npm outdatedпокаже його з інформацією про версію.


2
ОП запитували про версію встановленого на даний момент пакету, а не про останню версію, наявну в реєстрі пакунків.
Девід Ференчі Рогожан

5

Це просте запитання, і воно повинно мати більш просту відповідь, ніж те, що я бачу вище.

Щоб побачити встановлені пакети npm з їх версією, це команда npm ls --depth=0, яка за замовчуванням відображає те, що встановлено локально. Щоб побачити глобально встановлені пакети, додайте -globalаргумент: npm ls --depth=0 -global.

--depth=0 повертає список встановлених пакетів без їх залежностей, що саме ви хочете робити більшу частину часу.

ls- це назва команди і list є псевдонімом для ls.


3

Доступ до package.json

Ви можете отримати доступ до пакету package.jsonабо bower.jsonза допомогою:

notepad ./node_modules/:packageName/package.json

Це дозволить відкрити package.jsonв системі, notepadяка має version numberз :packageNameви включили в command.

Наприклад :

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

Щасти.


6
Мало того, що є набагато простіші способи зробити це, версія, яку ви вказали у своєму пакеті.json, насправді не може бути встановленою версією через позначення діапазону semver. Тобто залежність може бути вказана як версія ^ 1.3.0, але це може означати що завгодно, від версії 1.3.0 до 1.99.99
Ізохронний

3

Ми можемо використовувати npm view будь-яку обіцянку (назва вашого модуля) -v


1
Це показує останню доступну версію, а не версію в локальному каталозі.
Крістіанбунді

@christianbundy ви можете використовувати npm list --depth = 0 | grep uuid
Нітин.

Мені довелося скористатися npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, але так, це працює, поки це залежність від найвищого рівня. Я не думаю, що це завжди так, виходячи з оригінального питання.
Крістіанбунді


0

Це дуже просто ... Просто тип нижче рядка

npm view < package-name > version

** Приклад **

npm view redux version

У мене версія 7.2.0 редукса

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.