Локальный NPM репозиторий за 5 минут со своими пакетами и кэширование

в 15:40, , рубрики: javascript, local npm, node.js, npm, repository, Разработка веб-сайтов

Доброго времени суток!

Рано или поздно в организациях возникают проблемы с распространением js модулей между проектами, настало то время когда в нашей компании встал этот вопрос.

Копировать и вставлять код это путь на темную сторону, поэтому было принято решение писать не просто js код, а создавать из него npm пакеты чтобы распространять между своими проектами.

Поиск бесплатных, частных npm репозиториев завел в тупик, а использование частных репозиториев на npm требует платы (а это не наш менталитет).

Поскольку в офисе есть сервер, который работает всегда(почти), было решено развернуть локальный npm.

Устройство популярных локальных npm репозиториев достаточно простое и однообразное, мы выбрали Verdaccio, из-за того, что обновления для него публиковались сравнительно недавно.

В основном это npm пакет, который ставится на Node.js > 4 и предоставляет веб интерфейс на определенный порт.

Огромным плюсом является функция кеширования, когда локальный npm не находит запрошенный у него пакет, то он идет на npmjs.com, скачивает к себе на диск нужный пакет и при повторных запросах этого пакета раздает его уже кешированную версию.

Итак, к настройке.

На машине, которая будет сервером:

npm i -g verdaccio

В файле C:UserslabAppDataRoamingverdaccioconfig.yaml находятся параметры сервера

Параметры по умолчанию жизнеспособны, можно ничего не менять, достаточно в конце файла дописать настройку, благодаря которой Verdaccio будет понимать какой порт прослушивать.

listen: 192.168.51.79:1234

192.168.51.79 это ip сервера, задав адрес таким образом мы сможем обращаться из локальной сети по ip сервера, либо по его DNS имени и добавив порт 1234 мы будем попадать на web интерфейс.

Если прописать listen: 192.168.51.79:80 то писать порт при настройках клиентов необязательно.

Далее запускаем наш локальный npm

verdaccio

Остальные действия будем производить на клиентах.

Устанавливаем путь к локальному репозиторию.

npm set registry http://192.168.51.79:1234

Готово, теперь все Ваши npm запросы будут идти и кешироваться через локальный сервер.

Если Вам нужно опубликовать npm пакет на сервер, то выполняем следующую инструкцию.

Cоздаем пользователя

npm adduser --registry http://192.168.51.79:1234 
login
password
mail@mail.ru

Логинимся

npm login
password
bezrukov@mir-omsk.ru

Проверяем, что мы под пользователем «login»

npm whoami

Публикуем пакет, rootProjectFolder — это папка с минимум тремя файлами index.js package.json README.md, пример выложил на github.

cd /rootProjectFolder
npm publish

Обновляем пакет. Обновляем версию в package.json, выполняем команды

cd /rootProjectFolder
npm publish

Пакет на локальном сервере, можно перейти на 192.168.51.79:1234 и посмотреть, что там появился новый пакет.

Кстати, информация о каждом из пакетов представлена в удобном виде и есть поиск по локальным пакетам.

image

P.S.: Если Вы ваша сеть имеет прокси, то на сервере нужно явно указать ее параметры, а на клиенте этого делать не нужно, потому что npm репозиторий локальный и для доступа клиентов к серверу прокси не требуется.

На сервере надо выполнить команду npm config edit и добавить следующие строчки

proxy=http://name:pass@proxy:port/
https-proxy=http://name:pass@proxy:port/
registry=http://registry.npmjs.org/

Буду рад комментариям и отзывам о том, как это устроено у вас.

Автор: bezrukovyra

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js