n1ro°
RU

Текст и данные · Инструкция

Как пометить peer dependency необязательной в npm

Это подходит библиотекам с необязательной интеграцией: основной пакет работает без host-зависимости, но умеет использова

Редакция N1RO · Проверено

Короткий ответ

Оставьте пакет в `peerDependencies`, а в `peerDependenciesMeta` задайте для него `{ "optional": true }`; npm не будет автоматически устанавливать такой optional peer.

Что делать

  1. 1. Объявите peer: Добавьте host package и совместимый диапазон в `peerDependencies`.
  2. 2. Добавьте meta: В `peerDependenciesMeta` для того же имени задайте `optional: true`.
  3. 3. Обработайте отсутствие: Код библиотеки должен корректно работать без optional peer, иначе метка будет ложной.
  4. 4. Проверьте оба режима: Тестируйте установку и запуск как с peer dependency, так и без неё.

Пример meta

`"peerDependenciesMeta": {"host-lib": {"optional": true}}` делает объявленный peer необязательным для установки npm.

Важно

Optional peer не должен быть фактически обязательным для загрузки основной функциональности пакета.

Как понять, что всё сработало

  • Пакет устанавливается и загружается без optional peer dependency.
  • При наличии peer используется версия, попадающая в диапазон из `peerDependencies`.

Что учитывать

Optional peer не должен быть фактически обязательным для загрузки основной функциональности пакета.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. package.json). Пример и формулировки — редакция N1RO на 2026-09-18.