Версии пакетов в 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.

 

Дополнительные материалы

  1. Официальная документация.
  2. Раздел с последними версиями Node.js на официальном сайте.
  3. Установка и обновление зависимостей в JavaScript.
  4. Основные linux-команды для новичка.

Используемые источники

  1. Официальная документация.
  2. Семантическое версионирование.

 

 


Дата добавления: 2021-12-10; просмотров: 27; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!