2016-07-11 3 views
0

Я работаю над модулями javascript/Node/React. Я разрабатываю:Почему «npm install» переопределяет узловые модули в существующей символической ссылке?

  • 1 модуль с общими чертами
  • Другие модули B, C, D ... с зависимостью от А.

Мне нужно, чтобы иметь возможность разработать на A и B в то же время. Именно поэтому, после того, как делать npm install в B, создать символическую ссылку из B к с npm link ../A. Я тогда в состоянии запустить сервер WebPack Dev из , WebPack DEV сервера от B и, следовательно, любая модификация повлияет B. Все это прекрасно работает для меня в этот момент.

Моя проблема заключается в том, что если я запускаю команду npm install из B, он будет держать символическую ссылку и удалить несколько узлов из модулей хранилища. Я не знаю почему? Я хотел бы сохранить существующую символическую ссылку A живым и иметь B игнорировать его при повторной установке.

Первым решением для меня, чтобы заполнить НПЕ скрипты после установки & предварительной установки, чтобы сделать rimraf из линка перед установкой Б узла модулей и повторно генерировать символьную ссылку После этого. Но это проблема для разработчиков, которые не работают на А и не требуют каких-либо символических ссылок ...

Я просто обновить НПЙ от 2 до 3, и я не нашел никаких ответов на том, как npm install взаимодействует с существующими символическими ссылками.

Я использую:

  • НПМ 3.10.3
  • узел 6.3.0

Спасибо за любую идею или ссылку, которая могла бы помочь

ответ

0

я наконец-то понял, что Append выполняя дополнительные тесты. Кажется, что поведение, которое я описал, происходит от путей «shrinkwrap.json». Независимо дописывает в папке , если я установлю (npm install) B с существующим shrinkwrap.json в В, в shrinkwrap правил.

В моем случае есть зависимости dev, загруженные в A. Эти зависимости dev не указаны в shrinkwrap.json от B.В результате A изменяется при переустановке B.

я могу произвести обратную задачу: Если я установлю A и сделать npm shrinkwrap в В, я буду иметь многочисленные ошибки, как «npm ERR! extraneous:»

кажется блокировки зависимостей без зависимостей Дев не может совместим с символикой npm в папке, установленной в режиме «dev», - а также с установленными зависимостями dev.

Смежные вопросы