Вопрос:
В NodeJS как можно проигнорировать сжатую обертку зависимости "Пакет B" при "npm установке" в вышестоящем порядке "Проект A ", когда" Пакет B "происходит из частного репо.
Фон:
Допустим, мы разрабатываем на частном npm -пакете" fancy-frontend "и получил систему CI для этого, которая требует держать npm -shrinkwrap. json рядом с пакетом. json (чтобы иметь детерминированный c снимок всех зависимостей).
В другом репо мы делаем разработку на более высокой системе с помощью проекта узла "fancy-system". Этот проект зависит от теговой версии "fancy-frontend". Поэтому мы выполняем установку этого проекта с помощью команды
npm i git+ssh://git@bitbucket.org/myteam/fancy-frontend.git#v1.0.2 --save
Из-за существующего npm -shrinkwrap. json в нашей под-зависимости "fancy-frontend" npm, кажется, использует эту подусадочную пленку и создает полное независимое дерево пакетов в модулях "fancy-frontend". Завершение работы с этим огромным деревом файлов зависимостей:
fancy-system/
package.json
npm-shrinkwrap.json
node_modules/
react-16.13.1
fancy-frontend/
package.json
npm-shrinkwrap.json
node-modules/
react-16.13.1 // e.g. same react dep as in parent, but has it's own instance
other-deps
other deps
ПРИМЕЧАНИЕ. Я добавил реакцию как образец зависимости, которая должна использоваться обоими модулями, но это не так.
Проблемы:
Мы получили огромную массу зависимостей с множеством дублированных пакетов (хотя "fancy-system" и "fancy-frontend" ссылаются на одну и ту же версию!). У нас есть проблемы с реакцией и множеством экземпляров (хотя мы устанавливаем реакцию как зависимость от сверстников в "fancy-frontend"!).