@credits npm-safe-install

Между npm install и npm link было довольно давнее соперничество. Давайте разберемся с предысторией, чтобы понять, в чем суть этого соперничества.

Фон

npm install - это команда npm, с помощью которой мы можем устанавливать различные зависимости в нашем проекте. Он либо устанавливает все зависимости, перечисленные в package.json, либо устанавливает зависимости, указанные как атрибут при выполнении команды.

npm link - это команда npm, которая создает символические ссылки, а также связывает локально установленные зависимые проекты с основным проектом. Вот о чем я говорю.

Предположим, у нас есть основной проект и проект «B», где основной проект зависит от «B». Вы бы сделали это с помощью npm install b --save.

Теперь предположим, что вы нашли ошибку в основном проекте и после некоторой отладки вы поняли, что ошибку вызывает B.

Довольно аккуратно. Теперь вы хотите изменить код в B. Как бы вы это сделали? Вы хотите внести изменения в B и сделать git push, а затем обновить зависимость?

Что ж, это работает, но это утомительно. Представьте, что исправление, которое вы сделали ранее, не работает. Так ты собираешься снова сделать git push?

Конечно, нет, на помощь приходит npm link.

Вы можете клонировать проект и связать его с основным проектом.

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

До сих пор все хорошо и все довольны. Но вдруг нам нужно добавить еще несколько зависимостей в основной проект.

Добросовестно полагаясь на npm install, мы выполняем следующую команду:

npm install pkg-1 pkg-2

А затем мы пытаемся построить проект, но внезапно получаем много ошибок: подмодуль «B» не найден или что-то подобное.

Очевидный вопрос

Что, черт возьми, случилось?…

Спустя какое-то время выяснилось, что установка npm принесла неприятности.
Во время установки npm произошло следующее:

Так как же решить эту проблему?

Грубая сила:

Каждый раз, когда вы запускаете npm install, вручную выполняйте ссылку npm для всех ваших подмодулей. Звучит просто. Верно! .. но когда вы работаете над большим проектом, содержащим сотни подмодулей, вы можете понять боль.

npm-safe-install:

Это когда npm-safe-install (герой нашей истории) спасает вас. npm-safe-install a.k.a nsi безопасно выполняет установку npm таким образом, чтобы локально связанные модули повторно связывались после установки данных пакетов.

nsi выполняет тщательное сканирование ваших node_modules, перечисляет все ваши связанные модули и кэширует их. Затем он устанавливает зависимости, после чего повторно связывает ваши подмодули.

Давайте посмотрим, насколько nsi приносит пользу:

  • Установить nsi из npm
npm i -g npm-safe-install
  • Если вы уже связали свои проекты, просто запустите следующее, если вы хотите переустановить или обновить свои зависимости:
~{project_directory}$ nsi

  • Если вы хотите установить новые пакеты npm, выполните следующее:
~{project_directory}$ nsi pkg-1 pkg-2

  • Вы также можете запустить nsi в другом каталоге, чем ваш текущий каталог, выполнив следующее:
~{current-directory}$ nsi -t {target-directory}

  • У вас также есть возможность перечислить свои подмодули в файле .nsi.json в корневом каталоге. В этом случае nsi будет использовать этот файл для связывания данных подмодулей.

Таким образом, мы видим, что npm-safe-install или nsi - отличная утилита командной строки, которая экономит много лишних усилий и упрощает вашу жизнь.

Не стесняйтесь просмотреть исходный код и поиграть с утилитой