npm¶
npm - это менеджер пакетов, который управляет модулями и зависимостями проекта. В Node.js npm уже имеется по умолчанию, поэтому его отдельная установка не требуется.
Все пакеты хранятся в облачном репозитории на официальном сайте. Вы также можете создать свой модуль и опубликовать его в репозитории для общего использования.
Прежде, чем начинать разрабатывать собственный модуль, попробуйте поискать его в npm репозитории. Наверняка уже будет существовать готовое решение, которое сэкономит ваше время.
Node.js npm также избавляет разработчика от необходимости хранить все используемые сторонние модули в удаленных репозиториях. За это отвечает файл package.json
.
package.json¶
В npm файл package.json
используется для описания модулей, от которых зависимо ваше приложение, и содержит ряд метаданных о приложении. Рассмотрим на примере. Предположим, у вас есть проект, корневая директория которого называется app
. Перейдите в app
через командную строку и введите команду.
1 |
|
Вам будет предложено ввести некоторые данные, на основе которых Node.js npm сгенерирует файл package.json
. Структура файла:
name
- название приложения;version
- версия;description
- описание;main
- главный файл приложения, который отвечает за его запуск (хорошей практикой считается давать названиеapp.js
илиindex.js
);scripts
- объект, описывающий команды, которые часто приходится выполнять в процессе разработки и упрощающий их использование;repository
- ссылка на Git репозиторий, где хранится проект;keywords
- массив ключевых слов, по которым будет осуществляться поиск модуля на сайте npm (если он будет там опубликован);author
- разработчик;license
- лицензия, под которой будет распространяться приложение.
Пример, как может выглядеть package.json
.
package.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Если вы не планируете публиковать свое приложение в общем репозитории npm, то заполнять все поля совсем не обязательно. Вполне будет достаточно для собственного удобства указать name
, version
и description
.
Управление модулями npm¶
Модули - это приложения, которые реализовывают некоторый функционал и могут быть использованы для разработки более сложных приложений. Например, фреймворк Express является устанавливаемым модулем. Рассмотрим установку пакета на примере Express. Из корневой директории проекта необходимо выполнить команду.
1 |
|
Все модули устанавливаются в директорию node_modules
той директории, откуда была вызвана команда npm install
.
Флаг --save
указывает на то, что мы хотим внести данный модуль в список зависимостей в файл package.json
. И когда возникнет необходимость запустить приложение в другой среде, то совсем не обязательно также переносить и папку node_modules
. Перенесите только файл package.json
и выполните в командной строке.
1 |
|
И все указанные в package.json
Node.js npm модули будут установлены в папку node_modules
.
Если при установке пакета вы не хотите, чтобы он добавлялся в список зависимостей, то просто не указывайте флаг --save
.
1 |
|
После установки модуля с --save
в package.json
появится объект dependencies
со списком зависимостей вашего проекта.
package.json
1 2 3 4 5 |
|
Для задания установки определенной версии или версии из какого-либо диапазона, используйте оператор @
.
1 2 |
|
При указании диапазона версий задаваемое значение должно быть заключено в двойные кавычки.
Установка самой последней версии модуля может быть выполнена так.
1 |
|
В процессе разработки, например для тестирования или измерения показателей производительности, вам могут понадобиться Node.js npm модули, которые не будут использоваться и даже не должны устанавливаться в среде production
. Чтобы установить npm модуль только для среды разработки, укажите флаг --save-dev
.
1 |
|
Теперь в package.json
должен появиться новый блок devDependencies
.
package.json
1 2 3 4 5 6 7 8 |
|
Теперь рассмотрим глобальную установку пакетов. Допустим, на вашем сервере одновременно работают несколько разных Node.js приложений, но которые имеют общие зависимости. Чтобы не дублировать пакет в директории каждого проекта, вы можете установить его в вашу систему глобально с помощью флага -g
и он будет доступен для использования во всей системе.
1 |
|
С течением времени Node.js npm модули дорабатываются и улучшаются, а следовательно выходят их новые версии. Чтобы обновить все пакеты, описанные в package.json
, используйте такую команду.
1 |
|
Обновление конкретного модуля, например Express, выглядит так.
1 |
|
Для удаления пакет из зависимостей вашего проекта, используйте uninstall
.
1 |
|
Если вы хотите также удалить его из package.json
, просто укажите флаг --save
.
1 |
|
package-lock.json¶
Сразу после установки хотя бы одного Node.js npm модуля вы увидите, что рядом с package.json
был создан файл package-lock.json
, который будет обновляться каждый раз при добавлении новой зависимости.
В package-lock.json
содержится описание состояния текущей иерархии используемых в приложении модулей: их точные версии и точные версии используемых ими модулей и так до конца. При развертывании Node.js приложения в новой среде наличие файла package-lock.json
гарантирует, что будут установлены версии тех пакетов, которые использовались в разработке в последний раз.
Описание файла package-lock.json
имеет более высокий приоритет в сравнении с описанием зависимостей package.json
.