Команды 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:

Спасибо за прочтение!

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Orbay Yeşil: Two little-known useful npm commands

Предыдущая статьяPython FastAPI: OpenAPI, CRUD, PostgreSQL в Docker и внедрение зависимостей
Следующая статьяДаешь меньше ошибок в проектах ПО!