Репозитории формата npm работают со штатными клиентами npm, yarn и pnpm. В примерах используются условные имена npm-proxy и npm-hosted.

Подключение к proxy

Укажите реестр в .npmrc:

registry=https://<GALLEON_HOST>/repository/npm-proxy/
npm install lodash

Приватные пакеты из hosted-репозитория подключаются привязкой области видимости к реестру — публичные пакеты продолжают идти через proxy:

@myscope:registry=https://<GALLEON_HOST>/repository/npm-hosted/

Если чтение требует аутентификации, добавьте строки учётных данных и для читаемого репозитория — по образцу из раздела Публикация, с соответствующим адресом.

Публикация

Добавьте в .npmrc учётные данные hosted-репозитория — логин и пароль либо «Name code» и «Pass code» токена (пароль кодируется в base64):

//<GALLEON_HOST>/repository/npm-hosted/:username=<USERNAME>
//<GALLEON_HOST>/repository/npm-hosted/:_password=<base64(<PASSWORD>)>
//<GALLEON_HOST>/repository/npm-hosted/:email=you@example.com
//<GALLEON_HOST>/repository/npm-hosted/:always-auth=true
npm publish --registry https://<GALLEON_HOST>/repository/npm-hosted/

Опубликованные версии неизменяемы: повторная публикация той же версии отклоняется.

Особенности

Особенности формата:

  • Теги распространения (npm dist-tag add/rm/ls) поддерживаются, но тег latest вручную переместить нельзя — он обновляется только публикацией.
  • npm deprecate работает, в том числе для уже опубликованных версий.
  • Пакеты с областью видимости (@scope/name) работают во всех клиентах.
  • В lock-файлы записываются адреса Galleon — ссылки на внешний реестр наружу не попадают.