Как найти версию установленного npm пакета?
Я пробовал несколько подходов, но ни один не работает правильно:
npm -v <package-name>выводит версию самого npmnpm 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-пакета:
npm list <package-name>
Или с использованием псевдонима:
npm ls <package-name>
Эта команда отобразит:
- Установленную версию указанного пакета
- Расположение, где пакет установлен
- Иерархию зависимостей (если вы не используете
--depth=0)
Например:
npm list express
Вывод может выглядеть так:
my-project@1.0.0 /path/to/project
└── express@4.18.2
Номер версии 4.18.2 — это то, что вы ищете.
Чтобы увидеть только установленную версию без дерева зависимостей:
npm list <package-name> --depth=0
Это дает более чистый вывод, сфокусированный только на информации об установленной версии.
Проверка глобально установленных пакетов
Для пакетов, установленных глобально (с помощью npm install -g <package>), нужно добавить флаг -g:
npm list -g <package-name>
npm ls -g <package-name>
Например:
npm list -g node
Это покажет вам глобально установленную версию Node.js.
Альтернативные методы и опции
Существует несколько альтернативных подходов для поиска версий пакетов:
Использование npm pkg get
Команда npm pkg get может извлечь версию из package.json:
npm pkg get dependencies.<package-name>
Например:
npm pkg get dependencies.express
Это выведет что-то вроде:
"4.18.2"
Прямая проверка package.json
Вы также можете проверить файл package.json напрямую:
npm ls --json <package-name> | jq '.dependencies."<package-name>".version'
Или проще:
cat package.json | jq -r '.dependencies."<package-name>"'
Использование npm outdated
Команда npm outdated показывает как установленные, так и последние версии:
npm outdated
Это выведет список пакетов, для которых доступны более новые версии, показывая вашу текущую версию по сравнению с последней.
Использование npm view с установленной версией
Вы упомянули, что npm view <package-name> version показывает версию из реестра. Чтобы получить установленную версию напрямую, можно объединить команды:
npm list <package-name> --depth=0 --json | jq -r '.dependencies."<package-name>"'
Распространенные проблемы и устранение неполадок
Ошибки разрешений
Если вы encountering permission errors при проверке глобальных пакетов, вам может понадобиться использовать sudo (хотя это обычно не рекомендуется):
sudo npm list -g <package-name>
Лучший подход: Настройте npm для использования каталога, в у которого у вас есть права на запись.
Несколько версий Node
Если у вас установлено несколько версий Node, убедитесь, что вы используете правильный экземпляр npm:
which npm
which node
Это показывает, какие исполняемые файлы npm и Node.js используются.
Ошибки “Пакет не найден”
Если вы получаете ошибки “package not found”:
- Убедитесь, что пакет действительно установлен в вашем проекте
- Проверьте, находитесь ли вы в правильном каталоге (запускайте из корня проекта)
- Для глобальных пакетов убедитесь, что они установлены глобально
Длинные деревья зависимостей
Дерево зависимостей может быть очень длинным для некоторых проектов. Чтобы ограничить вывод:
npm list <package-name> --depth=1
Практические примеры
Вот несколько практических примеров, которые вы можете использовать сразу:
Пример 1: Проверка версии Express
npm list express
# или
npm ls express
Пример 2: Проверка всех верхнеуровневых пакетов
npm list --depth=0
Пример 3: Проверка конкретной версии React
npm list react --depth=0
Пример 4: Проверка глобальной версии TypeScript
npm list -g typescript
Пример 5: Получение версии в формате JSON
npm list react --json | jq '.dependencies.react.version'
Пример 6: Проверка нескольких пакетов одновременно
for package in express react lodash; do
npm list $package --depth=0
done
Источники
- Документация npm - npm list
- Документация npm - npm pkg get
- Документация npm - npm ls
- Stack Overflow - How to check installed npm package version
- GitHub npm - List command implementation
Заключение
Самый надежный способ проверить установленную версию npm-пакета — использовать npm list <package-name> или npm ls <package-name>. Не забывайте использовать флаг --depth=0 для более чистого вывода и флаг -g для глобально установленных пакетов. Если вам нужен программный доступ, рассмотрите использование npm pkg get или вывод в формате JSON с помощью --json. Для сложных проектов с множеством зависимостей визуализация дерева зависимостей может помочь понять конфликты версий и пути обновления. Всегда запускайте эти команды из корневого каталога проекта, чтобы убедиться, что вы проверяете правильные версии пакетов для вашего конкретного контекста проекта.