Как избежать установки пакетов в монорепо с использованием Yarn

10

Я построил monorepo с помощью Lerna и Пряжа рабочие области .

Все работает нормально, но каждый раз, когда я устанавливаю новую зависимость для пакета (назовем его A ), используя:

yarn add <package_name>

Yarn добавляет его, а затем запускает installсценарий всех пакетов в monorepo, даже пакетов, на которые A не полагается.

Есть ли в любом случае этого избежать? Требуется несколько минут, чтобы установить их без всякой причины.

Erazihel
источник
Так вы использовали пакеты Lerna и Yarn? Почему не просто Лерна? Кроме того, вы пытались добавить пакет с помощью Lerna и установить область действия? github.com/lerna/lerna/tree/master/commands/add
kbariotis
Я использую Lerna для публикации и создания версий своих пакетов и рабочих областей Yarn, чтобы легко управлять зависимостями. Я попробовал ваше предложение, но оно не сработало. Спасибо за попытку :)
Erazihel

Ответы:

4

Попробуйте добавить в конкретное рабочее пространство с помощью: -

yarn workspace <workspace_name> add <package_name>

Для некоторых документов проверьте здесь

Ezrqn Kemboi
источник
Я не хочу устанавливать зависимость для всего рабочего пространства, но только для одного пакета
Erazihel
4

Вы можете попробовать пряжу 2 с nodeLinker: node-modulesв .yarnrc.yml. Yarn 2 гарантирует запуск перестроения только на пакетах с измененными зависимостями, это не гарантируется Yarn 1. Однако все еще будет очень редкий случай, когда, по-видимому, несвязанные пакеты перестраиваются, если они поднимаются по-разному после добавления нового пакета. , но это случится очень редко.

Виктор Власенко
источник
Я попробовал ваше предложение, но похоже, что, к сожалению, результат все тот же ...: /
Erazihel
4

Используя область действия, добавьте пакет к определенному модулю.

lerna add some_package_1 --scope=some_module_x

Подробнее: https://github.com/lerna/lerna/tree/master/commands/add#readme

xdeepakv
источник
Это то, что @kbariotis предложил в комментарии к моему вопросу. Я пытался, и результат все тот же.
Эразихель
Можете ли
Я сделал, и еще раз результат все тот же
Erazihel