Подтвердить что ты не робот

Есть ли способ настроить несколько реестров в одном файле npmrc

Вот моя проблема. У нас есть частный реестр NPM, который работает только в VPN. Я хотел бы иметь резервный реестр https://registry.npmjs.org, чтобы, когда я вышел из VPN, он работает без проблем.

PS В настоящее время я использую npmrc, который отлично справляется с переходом между файлами.npmrc в качестве обходного пути

4b9b3361

Ответ 1

В вашем файле .npmrc вы можете иметь несколько реестров для скоординированных пакетов. Например:

@polymer:registry=<url register A>
registry=http://localhost:4873/

Пакеты в области @polymer будут получены от https://registry.npmjs.org, но остальные будут получены из вашего локального NPM.

Ответ 2

В версии 4.4.1, если вы можете изменить имя пакета, используйте:

npm config set @myco:registry http://reg.example.com

Где @myco - ваш пакет.

Вы можете установить пакет таким образом:

npm install @myco/my-package

Для получения дополнительной информации: https://docs.npmjs.com/misc/scope

Ответ 3

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

##############NPM ALIASES######################
alias npm-default='npm config set registry https://registry.npmjs.org'
alias npm-sinopia='npm config set registry http://localhost:4873/'

Ответ 4

Для тех, кто ищет решение для аутентификации, я бы добавил в решение для пакетов с ограниченным числом пакетов, что вы можете иметь несколько строк в вашем файле .npmrc:

//internal-npm.example.com:8080/:_authToken=xxxxxxxxxxxxxxx
//registry.npmjs.org/:_authToken=yyyyyyyyyy

Каждая строка представляет собой другой реестр NPM

Ответ 5

Поскольку это было пару лет, и это не представляется возможным сделать это (используя только npm), решение этой проблемы - использовать Nexus Repository Manager (из Sonatype). Nexus поддерживает несколько репозиториев, позволяет вам заказывать их, а также прокси/кеши для повышения скорости.

Существует бесплатная версия и про/платная версия. Функция, которая поддерживает это, описана в: https://help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries

Соответствующая информация дублируется ниже, поэтому, если/когда вышеуказанный URL/ссылка перестает работать, информация все еще здесь.

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

Он позволяет создавать частные реестры 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 чтобы ваш пакет был опубликован в правильное репо.

Ответ 6

Некоторые шаги, которые вы можете попробовать. (как мы это делаем на моем рабочем месте)

  • Создайте группу реестра с двумя (или более) исходными адресами репозитория. Один из них будет вашим внутренним частным, а другой - прокси-сервером npmjs, отдающим приоритет внутреннему.
  • Сделайте эту группу реестром в файле .npmrc. Таким образом, npm всегда будет пытаться получить его из внутреннего, если не найти его из прокси-сервера

Надеюсь, что это поможет.

Ответ 7

Вы можете использовать синтаксис нескольких репозиториев для записи registry в файле .npmrc:

registry=http://serverA.url/repository-uri/
//serverB.url/repository-uri/
//serverC.url/repository-uri/:_authToken=00000000-0000-0000-0000-0000000000000
//registry.npmjs.org/

Это заставит ваш npm искать пакеты на разных серверах.