НейроАгент

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

Узнайте правильные команды npm для поиска версий установленных пакетов. Узнайте, как использовать npm list, npm ls и другие методы для проверки версий пакетов локально и глобально. Получите практические примеры и советы по устранению неполадок.

Вопрос

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

Я пробовал несколько подходов, но ни один не работает правильно:

  • npm -v <package-name> выводит версию самого npm
  • npm version <package-name> выводит загадочную ошибку
  • npm view <package-name> version выводит версию пакета в реестре (последнюю доступную)

Какая правильная команда, чтобы получить установленную версию npm пакета?

НейроАгент

Правильная команда для поиска версии установленного npm-пакета — npm list <package-name> или её псевдоним npm ls <package-name>. Эта команда отображает установленную версию пакета вместе с деревом зависимостей. Вы также можете использовать npm list --depth=0, чтобы показать только верхнеуровневые пакеты с их версиями, или npm list -g <package-name> для проверки глобально установленных пакетов.

Содержание

Базовая команда для проверки установленных версий

Основная команда для проверки установленной версии npm-пакета:

bash
npm list <package-name>

Или с использованием псевдонима:

bash
npm ls <package-name>

Эта команда отобразит:

  • Установленную версию указанного пакета
  • Расположение, где пакет установлен
  • Иерархию зависимостей (если вы не используете --depth=0)

Например:

bash
npm list express

Вывод может выглядеть так:

my-project@1.0.0 /path/to/project
└── express@4.18.2

Номер версии 4.18.2 — это то, что вы ищете.

Чтобы увидеть только установленную версию без дерева зависимостей:

bash
npm list <package-name> --depth=0

Это дает более чистый вывод, сфокусированный только на информации об установленной версии.

Проверка глобально установленных пакетов

Для пакетов, установленных глобально (с помощью npm install -g <package>), нужно добавить флаг -g:

bash
npm list -g <package-name>
npm ls -g <package-name>

Например:

bash
npm list -g node

Это покажет вам глобально установленную версию Node.js.

Альтернативные методы и опции

Существует несколько альтернативных подходов для поиска версий пакетов:

Использование npm pkg get

Команда npm pkg get может извлечь версию из package.json:

bash
npm pkg get dependencies.<package-name>

Например:

bash
npm pkg get dependencies.express

Это выведет что-то вроде:

"4.18.2"

Прямая проверка package.json

Вы также можете проверить файл package.json напрямую:

bash
npm ls --json <package-name> | jq '.dependencies."<package-name>".version'

Или проще:

bash
cat package.json | jq -r '.dependencies."<package-name>"'

Использование npm outdated

Команда npm outdated показывает как установленные, так и последние версии:

bash
npm outdated

Это выведет список пакетов, для которых доступны более новые версии, показывая вашу текущую версию по сравнению с последней.

Использование npm view с установленной версией

Вы упомянули, что npm view <package-name> version показывает версию из реестра. Чтобы получить установленную версию напрямую, можно объединить команды:

bash
npm list <package-name> --depth=0 --json | jq -r '.dependencies."<package-name>"'

Распространенные проблемы и устранение неполадок

Ошибки разрешений

Если вы encountering permission errors при проверке глобальных пакетов, вам может понадобиться использовать sudo (хотя это обычно не рекомендуется):

bash
sudo npm list -g <package-name>

Лучший подход: Настройте npm для использования каталога, в у которого у вас есть права на запись.

Несколько версий Node

Если у вас установлено несколько версий Node, убедитесь, что вы используете правильный экземпляр npm:

bash
which npm
which node

Это показывает, какие исполняемые файлы npm и Node.js используются.

Ошибки “Пакет не найден”

Если вы получаете ошибки “package not found”:

  1. Убедитесь, что пакет действительно установлен в вашем проекте
  2. Проверьте, находитесь ли вы в правильном каталоге (запускайте из корня проекта)
  3. Для глобальных пакетов убедитесь, что они установлены глобально

Длинные деревья зависимостей

Дерево зависимостей может быть очень длинным для некоторых проектов. Чтобы ограничить вывод:

bash
npm list <package-name> --depth=1

Практические примеры

Вот несколько практических примеров, которые вы можете использовать сразу:

Пример 1: Проверка версии Express

bash
npm list express
# или
npm ls express

Пример 2: Проверка всех верхнеуровневых пакетов

bash
npm list --depth=0

Пример 3: Проверка конкретной версии React

bash
npm list react --depth=0

Пример 4: Проверка глобальной версии TypeScript

bash
npm list -g typescript

Пример 5: Получение версии в формате JSON

bash
npm list react --json | jq '.dependencies.react.version'

Пример 6: Проверка нескольких пакетов одновременно

bash
for package in express react lodash; do
  npm list $package --depth=0
done

Источники

  1. Документация npm - npm list
  2. Документация npm - npm pkg get
  3. Документация npm - npm ls
  4. Stack Overflow - How to check installed npm package version
  5. GitHub npm - List command implementation

Заключение

Самый надежный способ проверить установленную версию npm-пакета — использовать npm list <package-name> или npm ls <package-name>. Не забывайте использовать флаг --depth=0 для более чистого вывода и флаг -g для глобально установленных пакетов. Если вам нужен программный доступ, рассмотрите использование npm pkg get или вывод в формате JSON с помощью --json. Для сложных проектов с множеством зависимостей визуализация дерева зависимостей может помочь понять конфликты версий и пути обновления. Всегда запускайте эти команды из корневого каталога проекта, чтобы убедиться, что вы проверяете правильные версии пакетов для вашего конкретного контекста проекта.