Упрощаем работу с npm: полезные сокращения и трюки

менеджер пакетов npm

В этой статье вы найдете несколько удобных команд для работы с npm — менеджером пакетов, входящим в состав Node.js. Из всего множества существующих мы выбрали те, которые могут быть наиболее полезны при ежедневном использовании.

Базовые сокращения

Сначала вспомним самые известные сокращения для установки:

  • установить пакет: npm install pkg, сокращение: npm i pkg.
  • установить пакет глобально: npm i --global pkg, сокращение: npm i -g pkg.
  • установить пакет и сохранить как зависимость: npm i --save pkg, сокращение: npm i -S pkg.
  • установить пакет только для использования в разработке (devDependency): npm i --save-dev pkg, сокращение: npm i -D pkg.

Другие сокращения можно посмотреть на официальном сайте.

Интересное

Инициализация нового пакета

Первое действие при создании нового пакета — npm init:
менеджер пакетов npmЕсли вопросы кажутся вам лишними и вы хотите их проскочить, используйте npm init -y или npm init -f:
менеджер пакетов npm

Тестирование

Часто используемую команду npm test можно заменить на npm t, она делает то же самое:
менеджер пакетов npm

Доступные скрипты

При работе над новым проектом вы, скорее всего, интересуетесь, что вообще можно запустить в его рамках. Можно открыть файл package.json и проверить секцию scripts:
менеджер пакетов npmНо список доступных скриптов можно получить и через npm run:
менеджер пакетов npmЕще вариант — установить интерактивное меню ntl (npm i -g ntl) и запустить в папке проекта:
менеджер пакетов npm

Установленные пакеты

Для проверки зависимостей тоже можно было бы зайти в package.json, но есть вариант получше — npm ls --depth 0:
менеджер пакетов npmДля проверки пакетов, установленных глобально, подходит та же команда с соответствующим флагом — npm ls -g --depth 0:
менеджер пакетов npm

Запуск локально установленных исполняемых модулей

Мы установили пакет, в нем есть исполняемый модуль, но он работает только при запуске через npm-скрипты. Почему это так, и как этого избежать?

Когда мы передаем команду терминалу, он ищет исполняемый модуль с таким же названием по всем путям, которые перечислены в переменной окружения PATH. Локально установленные пакеты регистрируют исполняемые файлы локально, поэтому они не перечислены в PATH и не могут быть обнаружены.

При запуске исполняемых модулей через npm-скрипты менеджер пакетов добавляет дополнительную папку к PATH<директория проекта>/node_modules/.bin. Её можно найти, запустив npm run env | grep "$PATH". С помощью npm run env можно увидеть все доступные переменные окружения.

В node_modules/.bin локально установленные пакеты размещают свои исполняемые модули. Запускаем ./node_modules/.bin/mocha в директории проекта:

менеджер пакетов npmПросто пишите ./node_modules/.bin/<команда>, когда хотите запустить локально установленный исполняемый модуль.

Найти пакет в Интернете

В файле package.json вы могли заметить запись repository. Для того, чтобы открыть соответствующий репозиторий в браузере, запустите команду npm repo. Команда npm home выполняет ту же функцию для записи homepage. Если вы хотите открыть пакет на официальном сайте, используйте команду npm docs.

Запуск скриптов до и после других скриптов

Вы скорее всего знакомы со скриптом pretest, он позволяет определить код, который следует запустить перед скриптом test. Оказывается, pre и post скрипты можно создавать для любых других скриптов, в том числе кастомных:

менеджер пакетов npm

Обновить версию пакета

Допустим, вы используете semver для управления версиями и хотите обновить версию перед очередным релизом. Можно открыть package.json и сделать это вручную, но зачем?

Более простой способ — запустить команду npm version с majorminor или patch:

менеджер пакетов npm

Еще несколько советов можно найти в специальном репозитории на GitHub, где кроме этого собраны разные полезные инструменты и ссылки на ресурсы, связанные с npm.

Если у вас есть свои трюки, которыми вы хотите поделиться, ждем ваших предложений в комментариях.

Перевод статьи «8 npm Tricks You Can Use to Impress Your Colleagues»