Найти версию установленного пакета npm


2201

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

Это печатает версию самого npm:

npm -v <package-name>

Это печатает загадочную ошибку:

npm version <package-name>

Это печатает версию пакета в реестре (то есть последняя доступная версия):

npm view <package-name> version

Как мне получить установленную версию ?


5
При моей установке «npm -v <имя-пакета>» сообщает о самой версии npm. Чтобы просмотреть последнюю версию пакета в реестре, я обнаружил, что «npm view <имя-пакета> версия» выполняет свою работу.
Дэвид А. Грей,

15
npm showпоказывает последнее в нпм, не установлено
Цагана Нохаева

Ответы:


2580

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», чтобы получить установленную экспресс-версию.
Гуя

103
Если вам нужен конкретный модуль, вы можете запустить его как npm list less-middlewareпример.
Хуанпако

13
Согласно совету @ 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

868

Другой быстрый способ узнать, какие пакеты установлены локально и без их зависимостей, - это использовать:

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
Хауи,

7
Прекрасно работает с| grep <package_name>
Марко Принс

4
@ygaradon Правильно, но --depth=0делает это быстрее, потому что не нужно рекурсивно загружать зависимости
Марко Принс

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

220

npm view <package> version - возвращает последнюю доступную версию пакета.

npm list --depth=0 - возвращает версии всех установленных модулей без зависимостей.

npm list - возвращает версии всех модулей и зависимостей.

И, наконец, чтобы получить версию узла: node -v


16
npm view <package> версия, идет в удаленный реестр npm, а не в локальную файловую систему ...
Александр Миллс

@AlexanderMills Верно, но наличие этого здесь избегает другого поиска для этого. Кстати, npm v, npm infoи npm showвсе псевдоним npm view.
CPHPython

85
npm info YOUR_PACKAGE version

например

npm info grunt version
0.4.5

105
Это не показывает версию установленного пакета, это просто показывает последнюю доступную версию.
Таннер Семерад

Согласитесь с @ tanner-semerad. Я проверил в Документах npm, чтобы прояснить это. npm infoэто псевдоним для npm viewи в Документах npm вы найдете это стоящее: Эта команда показывает данные о пакете и печатает их в поток, на который ссылается outfd config, по умолчанию это stdout. [...] Версия по умолчанию - «последняя», если она не указана. Вот так я и голосую вниз.
Dannydedog

Показывает последнюю доступную версию, а не последнюю установленную. Downvoted.
lofihelsinki

2
npm info YOUR_PACKAGE versionЕдинственное, что сработало :)
GOXR3PLUS

то же самое, 'npm info YOUR_PACKAGE version' Единственное, что сработало
Джонас

63

Я просто использовал

npm list | grep <package name>

и это работало отлично

По окнам беги:

npm list | find <package name>

В PowerShell запустите:

npm list | sls <package name>

3
findверсия не работает для меня - даже строки в кавычках, но PowerShell работает хорошо
указ

4
Для пользователей Windows: npm list -g --depth=0 |find "<package name>" обратите внимание на двойные кавычки
robe007

56

Из корня пакета сделайте:

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

РЕДАКТИРОВАТЬ : (поэтому вам нужно cdвойти в домашний каталог модуля, если вы еще не там. Если вы установили модуль с npm install, то он будет в node_modules/<module_name>)

РЕДАКТИРОВАТЬ 2 : обновляется в соответствии с ответом @ jeff-dickey


Ницца! Немного быстрее, чем запускать «список npm», как предлагают другие ответы (~ 1 с вместо ~ 20 с) - по крайней мере, когда у вас есть готовый фрагмент кода! (для этого действительно должен быть плагин 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] version , npm info [module] version , npm show [module] version или npm v [module] version для проверки версии на установленном npm-модуле.

Давайте предположим, что моя версия модуля grunt - 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

проверьте скриншот, он показывает все о версии пакета, обновлении новой версии и неиспользуемой версии.

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

Это работает глобально тоже. попробуй. Надеюсь, это поможет кому-то.


7

Вот переносимый однострочный Unix (с использованием grepand sed), который возвращает строку версии глобально установленного пакета npm ( вместо этого удалите gfrom -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
Мало того, что есть гораздо более простые способы сделать это, версия, которую вы указали в своем package.json, на самом деле может не быть установленной версией из-за нескольких диапазонов обозначений. То есть, зависимость может быть определена как версия ^ 1.3.0, но это может означать что угодно , начиная с версии 1.3.0 до 1.99.99
Isochronous

3

Мы можем использовать npm view any-обещание (имя вашего модуля) -v


1
Здесь показана последняя доступная версия, а не версия в локальном каталоге.
Кристианбунди

@christianbundy вы можете использовать список npm --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.