Оскільки минуло кілька років, і це не представляється можливим зробити (використовуючи лише npm), рішенням цієї проблеми є використання диспетчера репозиторії Nexus (від Sonatype). Nexus підтримує декілька сховищ, дозволяє замовляти їх, а також проксі-сервери / кеші для підвищення швидкості.
Існує безкоштовна версія про-платної версії. Функція, яка підтримує це, описана на веб-сторінці :
https://help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries
Відповідна інформація дублюється нижче, якщо / коли вищезазначена URL-адреса / посилання перестає працювати, інформація все ще є тут.
Група репозиторіїв - це рекомендований спосіб викрити всі ваші сховища реєстрів npm від менеджера сховищ вашим користувачам, не потребуючи додаткової конфігурації на стороні клієнта. Група репозиторіїв дозволяє викрити агрегований вміст кількох проксі-серверів та розміщених сховищ з однією URL-адресою npm та іншими інструментами.
Це дозволяє створювати приватні реєстри npm
Приватний реєстр npm може використовуватися для завантаження власних пакетів, а також сторонніх пакетів.
І
Щоб зменшити повторювані завантаження та підвищити швидкість завантаження для ваших розробників та серверів CI, слід проксі реєстру, розміщеного за адресою https://registry.npmjs.org . За замовчуванням npm безпосередньо отримує доступ до цього реєстру. Ви також можете проксі будь-які інші реєстри, які вам потрібні.
Отож, короткий список речей, які ви робите, щоб зробити цю роботу:
Встановити Nexus
Створіть локальне / приватне репо (або вкажіть на ваше приватне репо на іншому сервері)
Створіть ГРУПУ, в якій перераховуються ваше приватне репо та загальнодоступне репо.
Налаштуйте файл $ HOME / .npmrc так, щоб він вказував на щойно створену "ГРУПУ".
Опублікуйте свої приватні npm-пакети в місцевому репо.
Тепер користувачі можуть запустити одноразову настройку.
npm config set registry https://nexus/content/groups/GROUP
- Потім користувачі можуть встановлювати як державні, так і приватні пакети через
npm install.
npm install my-private-package
npm install lodash any-other-public-package
І ваші загальнодоступні, і приватні пакети можна встановити за допомогою простої npm installкоманди. Nexus знаходить пакет, який шукає кожне репо, налаштоване в групі, і повертає результати. Тож npm все ще вважає, що існує лише один реєстр, але за завісою використовується кілька репостів.
ВАЖЛИВА ПРИМІТКА. Коли ви публікуєте свої компоненти, вам потрібно буде вказати npm publish --registry https://nexus/content/repositories/private-repo my-private-packageкоманду, щоб ваш пакет був опублікований у правильному репо-репо.