Текст и данные · Инструкция
Как пометить peer dependency необязательной в npm
Это подходит библиотекам с необязательной интеграцией: основной пакет работает без host-зависимости, но умеет использова
Короткий ответ
Оставьте пакет в `peerDependencies`, а в `peerDependenciesMeta` задайте для него `{ "optional": true }`; npm не будет автоматически устанавливать такой optional peer.
Что делать
- 1. Объявите peer: Добавьте host package и совместимый диапазон в `peerDependencies`.
- 2. Добавьте meta: В `peerDependenciesMeta` для того же имени задайте `optional: true`.
- 3. Обработайте отсутствие: Код библиотеки должен корректно работать без optional peer, иначе метка будет ложной.
- 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.