Всем нам доводилось хотя бы раз настраивать npm — пакетный менеджер node.js. Но мы едва ли отдаем ему должное, ведь это не основная часть нашей разработки. Мы воспринимаем npm как файл, который просто содержит зависимости. Но npm — это нечто большее. И при этом овладеть премудростями его использования хотя бы на среднем уровне совсем не сложно. Давайте начнем с популярных команд.
npm init
Это первая команда, которую вы будете использовать при настройке своего проекта.
Команда запросит у вас общую информацию: имя проекта, описание, версию, имя автора, ссылку на GitHub, домашнюю страницу и т. п. После этого будет сгенерирован файл package.json в корневой папке.
Всю введенную информацию можно в любое время отредактировать.
Если вы не хотите вводить эти сведения и предпочитаете оставить все по умолчанию, запустите команду в виде npm init --yes
.
Все данные при этом будут взяты из ваших настроек конфигурации.
npm config
С помощью этой команды можно менять настройки конфигурации.
Например, можно установить имя автора по умолчанию:
npm config set init-author-name "Ankit Kumar"
Затем это значение можно вывести в stdout (в стандартный поток вывода, т. е. на экран):
npm config get init-author-name
npm install
При помощи этой команды можно установить пакет и любые пакеты, от которых он зависит. Пакет — это папка с программой, описанная в package.json или gzip-архив такой папки.
Сокращенное написание:
npm i
По умолчанию команда npm install
установит все модули, перечисленные как зависимости в package.json.
Для установки отдельного пакета используйте команду в такой форме:
npm i package-name
Чтобы сохранить пакет в зависимостях (dependencies — пакеты, от которых зависит ваш пакет, чаще всего это библиотеки), используйте следующую команду:
npm i package-name --save
Для сохранения пакета в dev-зависимостях (devDependencies — пакеты, необходимые для разработки):
npm i package-name --save-dev или npm i package-name -D
По умолчанию все пакеты устанавливаются локально, в папке проекта. Но пакет можно установить и глобально:
npm i package-name --global или npm i package-name -g
npm uninstall
Команда для удаления пакетов.
Сокращенная форма:
npm un
Чтобы удалить пакет из установленных, выполните следующую команду:
npm un package-name
Эта команда принимает три опциональных флага:
-g
— пакет удаляется глобально--save
— удалить пакет из списка зависимостей-D
— удалить пакет из списка dev-зависимостей
npm ci
Эта команда напоминает npm install
. Но есть отличие: она используется в автоматизированном окружении, например, на платформах тестирования, в непрерывной интеграции и деплойменте.
- Для запуска
npm ci
у вас обязательно должен присутствовать файл package-lock.json или npm-shrinkwrap.json. - При несоответствии зависимостей в package.json и package-lock.json вы получите ошибки (package lock не обновится).
- Команда используется для установки целых проектов, а не отдельных пакетов.
- Она никогда не записывает в package.json или какой-либо из package-locks: установки, по существу, заморожены.
- Если пакет node_modules уже присутствует, он будет автоматически удален до того, как
npm ci
начнет свою установку.
npm audit
С помощью этой команды можно просканировать свой проект на уязвимости и автоматически установить любые совместимые обновления для уязвимых зависимостей:
npm audit fix
npm cache
Добавляет указанный пакет в локальный кэш. Изначально эта команда предназначалась для внутреннего использования самим NPM. Но с ее помощью можно явно добавлять данные в локальный кэш инсталляций.
npm cache add <tarball file>
npm cache add <folder>
npm cache add <tarball url>
npm cache add <name>@<version>
При установке пакетов они не кэшируются. Поэтому, чтобы сделать их доступными офлайн, нужно использовать эту команду.
К счастью, yarn
кэширует все пакеты, которые вы устанавливаете, и доступен офлайн.
npm ls
Эта команда выводит в stdout (стандартный поток вывода) все установленные версии пакетов, а также их зависимости, в древовидном формате.
npm link
Эта команда часто используется разработчиками, которые хотят перед публикацией компонентов в реестре npm протестировать их локально. Команда создает в глобальной папке символическую ссылку {prefix}/lib/node_modules/<package>
, ведущую на пакет, в котором была выполнена команда npm link
.
Далее, в каком-то другом месте команда npm link package-name
создаст символическую ссылку из глобально установленного package-name в node_modules/ текущей папки. Теперь вы можете импортировать ваш компонент, и он должен появиться в node_modules.
Обратите внимание, что имя пакета (package-name
) берется из package.json, а не из имени директории.
npm publish
Публикация пакетов в реестре. После публикации пакеты можно будет устанавливать, обращаясь к ним по имени. Все файлы в директории пакета включаются в публикуемый пакет автоматически, если только нет локальных файлов .gitignore или .npmignore.
По умолчанию npm публикует пакеты в публичном реестре. Это можно перезаписать, указав другой реестр по умолчанию или используя scope в имени (см. package.json).
От редакции Techrocks. Предлагаем почитать статью «Как опубликовать собственный NPM-пакет».
npm pack
Эта команда создает файл с расширением .tgz (т. н. tarball, tar-архив). Этот файл — пакет, пригодный для установки в любом приложении.
Например:
example-component.tgz — это tar-архив. Я могу скопировать его в любое node-приложение. Затем я добавлю его в мой файл package.json:
"dependency": { "example-component: "file: ./example-component.tgz" }
и запущу:
npm i/install
npm help
Справка по npm. Справка запрашивается в формате npm help <термин> [<термины>]
.
В результате будет выведена подходящая страница документации по указанному термину. Если справки по такому слову нет или если введено несколько терминов, npm запустит команду help-search
для поиска соответствий.
npm whoami
Выводит на экран username, указанный в конфиге.
npm login/logout
Вход и выход из учетной записи.
Разумеется, в документации NPM можно найти куда больше полезных команд: не забывайте туда заглядывать!
От редакции Techrocks. Возможно, вам будет интересна статья «5 приемов работы с npm для повышения продуктивности».
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]