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


10

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

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

yarn add <package_name>

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

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


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

Я использую Lerna для публикации и создания версий своих пакетов и рабочих областей Yarn, чтобы легко управлять зависимостями. Я попробовал ваше предложение, но оно не сработало. Спасибо за попытку :)
Erazihel

Ответы:


4

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

yarn workspace <workspace_name> add <package_name>

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


Я не хочу устанавливать зависимость для всего рабочего пространства, но только для одного пакета
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


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


Я сделал, и еще раз результат все тот же
Erazihel
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.