У меня есть стандартный 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
обоих подмодулей)