Надёжное подключение приватных НПМ-пакетов
Как подключать публичные или приватные пакеты, опубликованные в npmjs.com — более-менее понятно. Но иногда нужно разместить репозиторий с библиотекой в своём хранилище (например, корпоративном «Гитлабе»), чтобы скрыть код от посторонних глаз (допустим, что-то узкоспециализированное под конкретный проект).
Менеджер пакетов НПМ может выкачивать зависимости как по ХТТП, так и по ССХ. У использования каждого протокола есть свои плюсы и минусы, но я предпочитаю работать по ССХ.
Предположим, что у нас есть свой «Гитлаб» по адресу gitlab.company.ru, а в нём репозиторий lazarus. Попробуем его подключить:
npm i git+ssh://git@gitlab.company.ru:lazarus.git
Но такое подключение рано или поздно приведёт к неприятным последствиям: мы не указали мажорную версию библиотеки. Исправим это:
npm i git+ssh://git@gitlab.company.ru:lazarus.git#semver:^v1
Теперь, если выйдет мажорный релиз (вер. 2), наше приложение по-прежнему будет работать с первой версией, даже если кто-то обновил все зависимости проекта.
Опытные разработчики пакетов применяют семантическое версионирование. В этом случае достаточно указать мажорную версию (цифру из первого разряда) и не бояться минорных обновлений и исправлений ошибок и дыр в безопасности (что весьма важно). Но в особо экстремальных случаях можно указывать версию вплоть до патча:
npm i git+ssh://git@gitlab.company.ru:lazarus.git#semver:^v1.3.3