Я использую библиотеку, которая поддерживает другую библиотеку с широким диапазоном версий в качестве одноранговой зависимости. К сожалению, один из дочерних проектов рабочей области использует версию, отличную от дочернего проекта, который использует библиотеку. В результате им требуются разные версии.
Я пытаюсь использовать выборочные разрешения, чтобы справиться с этим и заставить его использовать правильную версию (https://yarnpkg.com/lang/en/docs/selective-version-resolutions/), но мне не повезло.
Возможно, я неправильно понимаю, как их использовать.
Моя текущая настройка - у меня есть корневое рабочее пространство с этими дочерними элементами внутри:
Project A package.json (который является источником проблемы):
dependencies: {
backbone.marionette: '2.4.1'
}
Project B package.json (у приложения есть проблемы):
dependencies: {
backbone.marionette: '1.8.8',
@organization/UILibrary: '0.0.22'
}
Пакет @ organization / UILibrary (который находится вне рабочей области) выглядит так:
peerDependencies: {
backbone.marionette: ">= 1 < 3"
}
К сожалению, даже несмотря на то, что Проект B не зависит от Проекта A, когда @ organization / UILibrary загружается в Проект B, он получает backbone.marionette версии 2.4.1 для своих требований (тогда как локальный для Project B получает 1.8.8 ).
Моя попытка использовать разрешения обновляет пакет Project B package.json следующим образом:
dependencies: {
backbone.marionette: '1.8.8',
@organization/UILibrary: '0.0.22'
},
{
"resolutions": {
"@organization/**/backbone.marionette": "1.8.8",
"@organization/backbone.marionette": "1.8.8",
"@organization/UILibrary/backbone.marionette: "1.8.8",
"@organization/UILibrary/**/backbone.marionette: '1.8.8"
}
Есть идеи? Основываясь на некоторых проблемах с пряжей и некоторых из их PR с зависимой зависимостью (см. https://github.com/yarnpkg/yarn/issues/4874) Я полагаю, это может быть связано с тем, что UILibrary ограничена (имеет косую черту).