Как синхронизировать зависимости рабочих областей пряжи

Допустим, у меня есть несколько пакетов в моем yarn workspaces.

@mycompany/utils
@mycompany/app
@mycompany/serv

Допустим, каждый из этих пакетов имеет dependency на lodash. Я хочу убедиться, что все они имеют одинаковую версию lodash.

Есть ли способ сделать это в каждом из package.json?


person Kenneth Truong    schedule 02.02.2019    source источник
comment
Если это все еще на повестке дня, как насчет добавления lodash в корневой package.json: yarn add lodash -W?   -  person Al-un    schedule 30.05.2019
comment
Да, я сначала сделал это и понял, что добавление его в корневой package.json не очень хорошее решение, потому что вы не сможете позже определить, какой пакет имеет какие зависимости):   -  person Kenneth Truong    schedule 30.05.2019
comment
В настоящее время я сталкиваюсь с аналогичной проблемой. Если вы ее решили, то как вы ее решили?   -  person Al-un    schedule 30.05.2019
comment
К сожалению.. Я не решил это):   -  person Kenneth Truong    schedule 30.05.2019
comment
Одна вещь, которую я хотел изучить, это, возможно, использование dependabot.com, так как он был приобретен Github и теперь бесплатен, так что может помочь поддерживать все зависимости в актуальном состоянии   -  person Kenneth Truong    schedule 30.05.2019
comment
Может поможет, мы переходим на реальную архитектуру монорепозитория. Мы используем рабочие пространства Yarn и Lerna. С lerna add lodash он добавляет lodash ко всем пакетам. Единственный трюк, который я нашел, чтобы гарантировать, что зависимости имеют одну и ту же версию везде, — это удалить ее (возможно, lerna exec -- yarn remove lodash) and re-add it lerna add [email protected]`.   -  person Al-un    schedule 15.07.2019


Ответы (1)


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

Устанавливаем в корень package.json:

yarn add --dev -W syncpack

Выполнить (рекомендуется: запускать при каждом коммите, используя хаски):

syncpack list-mismatches

Дополнительная информация: https://github.com/JamieMason/syncpack.

person Stav Alfi    schedule 23.10.2020