npm устанавливает локальные модули с общими зависимостями - PullRequest
1 голос
/ 06 июня 2019

Мы разрабатываем приложение Electron с зависимостью от SDK (которое мы также разрабатываем).Как правило, как только SDK готов, мы делаем новую версию и обновляем приложение Electron, чтобы использовать его.

Но я хотел бы внести локальное изменение в SDK и использовать приложение Electron.Это оказывается проблематичным.

Подход, который я выбрал, состоит в том, чтобы из каталога приложений Electron запустить

npm install /path/to/sdk/moduleB

, т.е. на основе ответов на какуказать локальные модули как зависимости пакета npm

Однако есть проблема.Подмодули SDK регистрируются с помощью модуля core .т.е. сделать экземпляр доступным.

Когда я использую локальный путь к moduleB, он не может найти основной модуль.Я не указываю ядро ​​как зависимость в moduleB.Но если я это сделаю, npm установит копию под

/path/to/sdk/moduleB/node_modules/core

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

./node_modules/core

, т. Е. Даже если они используют ту же версию.

Такое поведение (по крайней мере, переустановка ядра) имеет некоторый смысл, если вы понимаете, как npm разрешает одну и ту же зависимость в разных версиях.

https://medium.com/learnwithrahul/understanding-npm-dependency-resolution-84a24180901b

и

https://docs.npmjs.com/cli/install

npm install:

Установите пакет в каталог как символическую ссылку в текущем проекте.Его зависимости будут установлены, прежде чем он будет связан.Если он находится внутри корня вашего проекта, его зависимости могут быть перенесены на верхний уровень node_modules, как и для других типов зависимостей.

Но кажется, что установка создает символическую ссылку, и npm не может искатьвернуться в

./node_modules/core

Единственный способ, которым я смог обойти это, - скопировать

/path/to/sdk/moduleB

в

./node_modules/moduleB

Есть ли лучшерешение, которое позволит мне повторно использовать зависимость

./node_modules/core

?

...