Резервный пул в пряжи v2 "свободный" режим
Из документации по свободному режиму пряжи v2:
Yarn поставляется с "свободным" режимом, который заставит компоновщик PnP работать в тандеме с подъемником узлов-модулей - сначала мы сгенерируем список пакетов, которые были бы подняты на верхний уровень при типичной установке node_modules, а затем запомните этот список как то, что мы называем "резервным пулом".
Во время выполнения пакетам, требующим незарегистрированных зависимостей, по-прежнему будет разрешен доступ к ним, если какая-либо версия зависимости окажется в резервном пуле (какие именно пакеты могут полагаться на резервный пул, можно настроить с помощью pnpFallbackMode).
Так где же именно находится этот резервный пул? В.yarn/cache
? Я активировал свободный режим в проекте с большим количеством зависимостей, но не заметил никакой разницы по сравнению с предыдущим состоянием.
1 ответ
В свободном режиме Yarn 2 не устанавливает никаких новых зависимостей, он добавляет только резервные разрешения. Резервный пул - это набор разрешений, которые могут использоваться всеми вашими зависимостями, это структура данных, хранящаяся внутри.pnp.js
файл в fallbackPool
свойство. Все ваши зависимости могут получить доступ к зависимостям, которые были бы перенесены в корень.node_modules
папка. Пряжа 2 определяет это путем бегаnode_modules
стратегия установки в памяти и получение списка зависимостей, поднятых в корень node_modules
папка.
Обратите внимание, что этот параметр конфигурации, тесно связанный с pnpMode: loose
это pnpFallbackMode
вариант. pnpFallbackMode
определяет, кому разрешено использовать резервные зависимости. По умолчанию только зависимости корневого проекта могут использовать резервные зависимости, а зависимостям рабочей области это запрещено. СpnpFallbackMode: all
как корневой проект, так и зависимости рабочей области могут полагаться на резервные зависимости. И сpnpFallbackMode: none
- резервные зависимости не могут использоваться вообще.
Свободный режим полезен для миграции на Yarn 2 PnP, поскольку некоторые пакеты в экосистеме JavaScript сильно зависят от того факта, что они могут получить доступ к пакетам, поднятым на верхний уровень. node_modules
. Хотя они полагаются на то, что они не должны этого делать, в режиме свободного PnP Yarn выдает только предупреждение и позволяет этим пакетам работать, вместо того, чтобы выдавать ошибку нарушения доступа.
Свободный режим - это гибрид старого node_modules
и более новая схема установки PnP, предназначенная для упрощения перехода на PnP.