Рубрики
Без рубрики

Что такое одноранговые зависимости в узловом модуле?

Простое объяснение поля peerDependencies в файле package.json

В некоторых файлах package.json вы можете увидеть несколько строк, подобных этой:

{
  //...
  "peerDependencies": {
    "libraryName": "1.x"
  }
}

Возможно, вы уже видели зависимости и Зависимости от разработчиков , но не Зависимости от сверстников .

зависимости – это пакеты, от которых зависит ваш проект.

devDependencies – это пакеты, которые необходимы на этапе разработки. Скажем, фреймворк для тестирования, такой как Jest или другие утилиты, такие как Babel или ESLint .

В обоих случаях при установке пакета его зависимости и зависимости от разработчиков автоматически устанавливаются npm.

Зависимости от сверстников разные. Они не устанавливаются автоматически.

Когда зависимость указана в пакете как одноранговая зависимость, она не устанавливается автоматически . Вместо этого код, включающий пакет, должен включать его в качестве своей зависимости.

npm предупредит вас, если вы запустите установку npm и он не находит этой зависимости.

Пример: допустим, пакет a включает зависимость б :

a/пакет.json

{
  //...
  "dependencies": {
    "b": "1.x"
  }
}

Пакет b в свою очередь хочет пакет c в качестве одноранговой зависимости:

б/пакет.json

{
  //...
  "peerDependencies": {
    "c": "1.x"
  }
}

Поэтому в пакете A мы должны добавить c в качестве зависимости, иначе при установке пакета b npm выдаст вам предупреждение (и код, скорее всего, завершится ошибкой во время выполнения):

a/пакет.json

{
  //...
  "dependencies": {
    "b": "1.x",
    "c": "1.x"
  }
}

Версии должны быть совместимы, поэтому, если одноранговая зависимость указана как 2.x , вы не можете установить 1.x или другую версию. Все это следует семантическое управление версиями .

Оригинал: “https://flaviocopes.com/npm-peer-dependencies/”