Версии пакетов в package .json
Важно упомянуть о системе обозначений версий пакетов при установке и в файле package.json. В примере с модулем colors перед версией модуля стоит символ каретки (^). Этот символ означает, что при установке модуля colors пакетному менеджеру разрешается обновлять минорную версию и накатывать патчи. То есть устанавливать версии модуля colors от 1.4.0 до 2.0.0, не включая последнюю.
Используются и другие символы:
● «>=» — при установке осуществится поиск версии больше указанной.
● «~» — при установке могут применяться патчи, но без обновлений минорной и мажорной версий.
Теперь вернёмся к зависимостям. Список зависимостей, необходимых для конкретного проекта означает, что без установки модуля colors программа не запустится и выдаст ошибку. И это действительно так, потому что в index.js вызывается функция, явно импортируемая из модуля colors.
Установка таких зависимостей осуществляется:
● запуском команды npm install + <название_пакета>, если нужно установить какой-то конкретный пакет;
● запуском npm install, если нужно установить все зависимости из списка dependencies.
npm install |
Важно! Команды установки зависимостей требуется вызывать из директории проекта. В корне проекта всегда должен лежать файл package.json.
Зависимости разработки
Зависимости нужны для разработки самого приложения. Чаще всего сюда относятся различные линтеры, типы для библиотек, плагины сборщиков кода и т. д.
|
|
Такие зависимости устанавливаются командой npm install + <название_пакета> + --save -dev.
Например, в проект требуется установить линтер — специальный инструмент, позволяющий соблюдать код-стайл проекта. Линтер используется только в процессе разработки проекта, на конечную функциональность он никак не влияет. Поэтому его следует устанавливать как зависимость разработки:
npm install eslint --save-dev |
В результате в package .json появится поле:
"devDependencies": { "eslint": "^7.15.0" } |
Все зависимости из devDependencies также устанавливаются при вызове npm install. Чтобы этого не происходило, например, если проект разворачивается на сервере для работы, а не для разработки, можно передавать флаг -- production:
npm install --production |
Прямые зависимости
В файле package .json описываются в поле peerDependencies. Чаще всего используются при публикации собственных пакетов. Необходимость в таких зависимостях возникает, например, при разработке плагина для линтера. Такие плагины разрабатываются для конкретной версии пакета-хоста, но напрямую его не импортируют внутрь своего кода. Соответственно, не имеет никакого смысла добавлять этот пакет в dependencies. Однако необходимость указать, для какой версии пакета-хоста плагин сформировался, никуда не исчезает. Эту зависимость в package.json-файле плагина и указывают как peerDependecies.
|
|
Например, плагин линтера под названием eslint-plugin-node разработан для eslint определённой версии, на момент написания — это >=5.16.0. И в package.json-файле этого плагина eslint указывается в peerDependencies:
"peerDependencies": { "eslint": ">=5.16.0" }, |
Важно! Такие зависимости не устанавливаются при вызове npm install. Если попытаться установить вышеупомянутый плагин без установки самого линтера, то установщик выдаст такое сообщение:
npm WARN eslint-plugin-node@11.1.0 requires a peer of eslint@>=5.16.0 but none is installed. You must install peer dependencies yourself. |
При разработке peerDependencies нужно указать вручную в package.json-файле.
Необязательные зависимости
Такие зависимости попадают в раздел optionalDependencies и устанавливаются командой npm install + <название_пакета> + --save -optional, если требуется установить конкретный пакет. Они также устанавливаются при запуске команды npm install, вместе с dependencies и devDependencies.
Связанные зависимости
Такие зависимости будут упаковываться вместе с проектом для его публикации. Они указываются в поле bundledDependencies. Этот тип зависимостей полезен при разработке проекта:
|
|
● если использовались какие-то модули, которых, например, нет в реестре npm;
● если в проекте используются какие-то собственные модули разработчика, которые он по каким-то причинам не опубликовал в npm.
Глоссарий
Current версии Node .js — это нечётные мажорные релизы, которые после 6 месяцев перестают поддерживаться.
LTS версии Node .js — стабильные версии, которые будут поддерживаться в течение 30 месяцев (чётные мажорные версии).
Npm (Node Package Manager ) — глобальный репозиторий для публикаций пакетов Node.js, а также инструмент для управления зависимостями Node.js-проекта.
Node .js — это программная среда, предназначенная для запуска и выполнения JavaScript-программ вне браузера.
Package .json — это json-файл, в котором описывается проект (название, версия, автор), указываются команды для работы с проектом и все требуемые для проекта зависимости.
REPL (Read — Eval — Print — Loop ) — режим работы, где Node.js считывает вводимый в консоль JS-код, выполняет его, показывает результат в консоли и зацикливает эту последовательность.
Зависимости — это дополнительные модули и библиотеки, которые используются в программе, при разработке программы и т. д.
Зависимости разработки — модули, которые нужны для процесса разработки приложения. Это различные линтеры, типы для библиотек, плагины сборщиков кода и т. д.
|
|
Необязательные зависимости — модули, установка которых необязательна для работы проекта.
Общие зависимости — это модули, требуемые для корректной работы приложения.
Прямые зависимости — модули, которые не импортируются напрямую в коде проекта, но требуются для его работы. Например, версия линтера указывается в прямых зависимостях плагина для этого линтера.
Связанные зависимости — зависимости, которые упаковываются вместе с проектом для его публикации в npm.
Дополнительные материалы
- Официальная документация.
- Раздел с последними версиями Node.js на официальном сайте.
- Установка и обновление зависимостей в JavaScript.
- Основные linux-команды для новичка.
Используемые источники
- Официальная документация.
- Семантическое версионирование.
Дата добавления: 2021-12-10; просмотров: 27; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!