Lerna.Установить зависимости в корневой проект - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть стандартный Lerna репозиторий, подобный следующему:

my-repo
 - package.json
 - packages
   - api
     - package.json
   - web-app 
     - package.json

Если мне нужна одинаковая зависимость в обоих пакетах (например, lodash), то люди из учебных пособий предлагают установить его на оба подмодуля.а затем загрузите проект с флагом lerna bootstrap --hoist.

Из-за --hoist flag lodash зависимость будет загружена только на корневой уровень node_modules, но оба субмодуля будут содержать ее как зависимость в своих соответствующихpackage.json

Но алгоритм разрешения пакетов Node ищет дерево файлов в поисках папки node_modules.

Итак, мой вопрос: почему я не могу просто установить общие зависимости в проект корневого уровня?Тогда lodash будет находиться под корнем node_modules.И подмодули (пакеты) найдут его, потому что Node будет искать node_module, пока не будет достигнут корень файловой системы.

По крайней мере, это поможет мне избежать использования необычного lerna bootstrap --hoist, так кака также lodash зависимость будет присутствовать только один раз на верхнем уровне package.json (и не дважды: в package.json обоих подмодулей)

1 Ответ

0 голосов
/ 29 декабря 2018

Итак, мой вопрос: почему я не могу просто установить общие зависимости в проект корневого уровня?

Вы можете, и вы правы, алгоритм разрешения узла найдет общую зависимостьхорошо.Недостатком этого является то, что вы теряете гибкость, и вам нужно будет развернуть или работать со всем моно-репо, что может подойти вам.Более традиционный подход - сохранить производственные зависимости в подпакетах, чтобы вы могли публиковать пакеты и использовать их по отдельности, не завися от корня monorepo, но, опять же, это может быть не важно для вас.

...