Команды npm list (npm ls) и npm config list (npm config ls) не особо популярны. Тем не менее они помогут решить некоторые проблемы в среде разработки, избавив от “ловушек” и “тупиков”.
1. npm list/ls
Менеджер npm включает в себя тысячи пакетов. Многие из них обычно используют другие пакеты в качестве зависимостей. А те, в свою очередь, нуждаются в других пакетах в качестве зависимостей.
Бывает так, что глубине этих зависимостей не видно конца. Но иногда нужно найти имя конкретного пакета, который используется в проекте. В этом поможет команда npm list. Продемонстрируем ее действие на примере:
Вот так может выглядеть дерево зависимостей. В данном проекте было сгенерировано более 900 строк в виде дерева, а здесь представлен обрезанный скриншот.
Иногда трудно найти конкретное имя проекта в окне терминала. Вы можете экспортировать его в файл следующим образом: npm list > dependencyList.txt.
Несколько полезных конфигураций для npm list
- — depth
Иногда нужно найти пакеты глобально установленные/первого уровня. В этом случае поможет конфигурация — depth=0
:
Кроме того, если необходим другой уровень глубины, можно настроить его следующим образом: — depth=1, 2, 3, …
.
- — json
Вывод древовидного представления npm list, имеющий своеобразный синтаксис, иногда может сбивать с толку. Если вы испытываете трудности, используйте конфигурацию — json для создания вывода в формате json:
2. npm config list/ls
Если вы работаете в крупной компании или у вашей организации есть частный реестр пакетов npm, то вы, вероятно, периодически используете публичный (registry.npmjs.org) и частный реестры.
Npm использует файл .npmrc для управления регистрацией. Например, чтобы переключить реестр на приватный сервер реестра компании, нужно написать адрес сервера реестра в файле .npmrc следующим образом:
registry=http://my-company-registry-server/
Это означает, что npm будет использовать этот сервер в качестве адреса реестра каждый раз, пока вы не измените его.
Однако с файлом .npmrc могут возникнуть некоторые проблемы. Дело в том, что он представлен не в единственном числе. Обычно он находится в папке user (для Windows) на диске компьютера, но может оказаться в нескольких других местах (например, в папке проекта). Более того, место, в котором осуществляется запуск команды npm (например, npm install
), имеет решающее значение для определения того, какой реестр будет использоваться npm в этой команде.
Допустим, у вас два файла .npmrc. Один из них находится в папке пользователя как registry=http://first-registry-server/
, другой — в папке проекта как registry=http://second-registry-server/
. Вы хотите запустить команду npm install
. Если запустить ее в папке проекта, npm установит пакеты с second-registry-server
. Если же запустить ее вне расположения проекта, npm установит пакеты с first-registry-server
.
Вам может казаться, что вы справитесь с этим. Но иногда просто невозможно понять, почему npm не находит пакеты. Пытаясь всячески разрулить ситуацию, вы рискуете упустить главный источник проблемы. Поэтому в такие моменты лучше использовать команду npm config list
. Она предоставит дамп о ваших конфигурациях npm. Там же вы увидите информацию о вашем реестре в виде ключа metrics-registry
:
Спасибо за прочтение!
Читайте также:
- 5 рекомендаций по оптимизации пул-реквестов
- 10 полезных команд для командной строки и консоли
- Установка и использование Snap-пакетов в Ubuntu 18.04
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Orbay Yeşil: Two little-known useful npm commands