Статьи

10 советов и хитростей, которые сделают вас ниндзя нпм

Сюрикен встроен в свиток

Эта статья была рецензирована Вильданом Сортиком , Мэттом Бернеттом и Томом Греко . Спасибо всем рецензентам SitePoint за то, что сделали контент SitePoint как можно лучше!

Несмотря на то, что новый проект Yarn от Facebook сильно волнует , постоянный успех Node.js во многом обязан его оригинальному менеджеру пакетов, npm .

Несколько простых команд npm — это все, что нужно для инициализации папки ( npm init ), загрузки пакетов ( npm install ) и создания тестов ( npm test ) и пользовательских сценариев ( npm run ) для использования в вашем проекте. Немного углубимся в подробности, но есть несколько советов и приемов, которые могут революционизировать ваши ежедневные задачи по разработке.

Примечание : если вам нужен учебник по npm, ознакомьтесь с нашим руководством для начинающих . Если вы не уверены в разнице между npm и Yarn, см. Наш пост: Yarn против npm: все, что вам нужно знать .

1. Получение справки!

Онлайновая справка npm и документация по командам CLI превосходны, но переключаться в браузер и обратно не всегда удобно. Быстрое напоминание обо всех параметрах доступно из командной строки:

npm help 

Справка для конкретных команд npm также может быть отображена:

 npm help <command> 

например, npm help install .

Или вы можете просмотреть краткую справку по параметрам команды:

 npm <command> -h 

2. Автозаполнение команды npm

npm предлагает автозаполнение команд для систем, использующих bash (включая Bash для Windows 10 ):

 npm completion >> ~/.bashrc 

или Z оболочка:

 npm completion >> ~/.zshrc 

Перезагрузите файл конфигурации оболочки, например

 source ~/.bashrc 

Теперь введите npm ins нажмите TAB и появится install . Вам никогда не нужно тратить время на полный ввод текста!

3. Исправление глобальных разрешений модуля

Linux-подобные системы могут выдавать ошибки прав доступа при попытке установить глобальные пакеты. Вы можете добавить sudo к любой команде npm, но это опасный вариант. Лучшее решение состоит в том, чтобы изменить каталог по умолчанию для npm на тот, который у вас есть:

 mkdir ~/.npm-global npm config set prefix '~/.npm-global' 

Добавьте следующую строку в ~/.bashrc или ~/.zshrc в зависимости от ситуации, используя ~/.zshrc вами текстовый редактор:

 export PATH="$HOME/.npm-global/bin:$PATH" 

Перезагрузите файл конфигурации оболочки ( source ~/.bashrc ), затем переустановите сам npm в новое пользовательское расположение:

 npm install -g npm 

Это также обновит npm до последней версии.

4. Обновление npm

Вы можете указать номер версии npm:

 npm -v 

и обновите, если требуется, используя:

 npm install -g npm 

Вам также может понадобиться перестроить аддоны C ++, когда будет выпущена новая основная версия Node:

 npm rebuild 

Кроме того, если вам нужно управлять обновлениями для нескольких версий Node.js и npm, рассмотрите такие опции, как nvm и n . У нас также есть учебник по этому вопросу: Быстрый совет: Установите несколько версий Node.js с помощью nvm

5. Определение npm init По умолчанию

Новые папки проекта инициализируются с помощью npm init . Это запросит у вас дополнительную информацию о вашем проекте и создаст исходный файл package.json .

Если вам надоело повторно вводить одну и ту же информацию каждый раз, когда вы начинаете новый проект, вы можете принять несколько значений по умолчанию, используя флаг -y :

 npm init -y 

Или вы можете установить некоторые разумные значения по умолчанию для использования npm:

 npm config set init.author.name <name> npm config set init.author.email <email> 

6. Сложный поиск пакетов

На момент написания статьи на npm было доступно более 350 000 пакетов, каждый день появлялось все больше. Хотя многие из них великолепны, вы, вероятно, захотите избежать использования менее популярных, с ошибками или отмененных пакетов. Поиск на npmjs.com и GitHub практичен, но есть и другие варианты…

НПМ

npms ранжирует пакеты для обеспечения общего показателя качества на основе версии проекта, количества загрузок, даты последнего обновления, частоты коммитов, охвата тестирования, документации, количества участников, проблем, звездочек, вилок и даже положения автора в общество.

npm Discover

npm Discover находит пакеты, которые обычно используются с другими, например, body-parser с Express.

Пакеты от PageRank

Пакеты по поиску PageRank сортируют пакеты npm по их рейтингу в Google.

Списки кураторов npm

В качестве альтернативы, используйте успех поиска кого-то другого. Я часто обращаюсь к Awesome Node.js от sindresorhus при поиске надежного решения.

7. Управление вашими пакетами

Вы выбрали свои пакеты и установили зависимости. Давайте перечислим, что у нас есть:

 npm list 

( ls , la и ll могут использоваться в качестве псевдонимов для list ).

Список показывает все: пакеты, подпакеты, подпакеты подпакетов и т. Д. Ограничьте вывод только пакетами верхнего уровня, используя:

 npm list --depth=0 

Домашнюю страницу пакета можно открыть с помощью:

 npm home <package> 

Это работает, только если ваша система может открыть браузер — это не удастся в версиях OS Server. Точно так же вы можете открыть GitHub-репозиторий пакета:

 npm repo <package> 

или его документация:

 npm docs <package> 

или текущий список ошибок:

 npm bugs <package> 

npm list сообщает, когда у вас установлены посторонние пакеты — те, на которые больше нет ссылок в вашем файле package.json . Вы можете npm uninstall каждый npm uninstall отдельно или удалить их все с помощью:

 npm prune 

Если вы добавите флаг --production или NODE_ENV переменной среды NODE_ENV задано значение production , пакеты, указанные как devDependencies в package.json , также будут удалены.

8. Блокировка зависимостей

По умолчанию npm ссылается на номера версий пакетов с --save вставки ( ^ ) при установке пакета с --save или --save-dev . Это прикрепляет пакет к его основному номеру версии. Например, ^1.5.1 разрешает устанавливать что-либо от этой версии до, но НЕ включая 2.0.0 , при запуске npm update .

Более консервативный символ тильды ( ~ ) прикрепляет пакет к вспомогательной версии. Например, ~1.5.1 разрешает устанавливать что-либо от этой версии до 1.6.0 но не включая 1.6.0 , при запуске npm update . Префикс тильды может быть установлен по умолчанию с помощью:

 npm config set save-prefix="~" 

Для тех, кто параноидален в отношении любых обновлений, которые могут сломать вашу систему, вы можете настроить npm на использование только точных номеров версий:

 npm config set save-exact true 

Кроме того, вы можете сжать свой проект, используя:

 npm shrinkwrap 

В результате создается файл npm-shrinkwrap.json содержащий конкретные версии используемых вами зависимостей. Этот файл используется по умолчанию и будет переопределять package.json при запуске npm install .

9. Поиск устаревших модулей

Как узнать, когда зависимость была обновлена? В течение многих месяцев я использовал список своих зависимостей ( npm list --depth=0 ), выполнял поиск пакета на npmjs.com и вручную проверял, какие номера версий изменились. Часы веселья. К счастью, есть значительно более простой вариант:

 npm outdated 

Или npm outdated -g для глобальных пакетов, таких как сам npm.

Вы также можете просмотреть текущую версию отдельного пакета:

 npm list <package> 

и изучить текущие и исторические версии:

 npm view <package> versions 

npm view <package> отображает всю информацию об отдельном пакете, включая его зависимости, ключевые слова, даты обновления, участники, репозиторий, лицензию и т. д.

10. Использование пакетов разработки

При разработке пакетов вы часто хотите попробовать их в других проектах или запустить из любого каталога (если ваше приложение это поддерживает). Нет необходимости публиковать пакет в реестре npm и устанавливать глобально — просто используйте:

 npm link 

из папки пакета. Это создает символическую ссылку в глобальной папке для этого пакета. Вы увидите ссылку при использовании:

 npm list -g --depth=0 

или

 npm outdated -g 

Теперь вы можете запустить пакет из командной строки или включить его в любой проект с помощью require .

Кроме того, вы также можете объявить зависимости по filepath в package.json , например

 "dependencies": { "myproject": "file:../myproject/" } 

Итак, это некоторые из моих любимых трюков с npm, но я пропустил один из ваших? Комментарии приветствуются …