Использовать токен авторизации для запроса частного реестра NPM для данной версии пакета, но без доступа к файловой системе? - PullRequest
1 голос
/ 12 января 2020

Цель этого усилия - проверить, существует ли версия пакета в частном реестре , не касаясь файловой системы / файлов конфигурации . Для пакетов в реестрах publi c это совершенно просто: npm view lpad@2.0.1 производит некоторую информацию об этой опубликованной версии, но (на момент написания) npm view lpad@201.0.0 не имеет никакой информации или вывода. Я использую это для вывода о существовании пакетов.

Я также могу передать частный URL-адрес реестра в npm view <packagename>, как в npm view <packagename> --registry https://private.registry/path/. Это похоже на частный реестр, хотя это явно не упомянуто в npm-view документации (но это описано в npm-search документации , так что я понимаю это как это документированная функция API).

Чтобы вообще иметь возможность общаться с частными реестрами, я могу использовать токен аутентификации в запросе в соответствии с этими npm инструкциями для выполнения этого в CI / Рабочий процесс с CD : поместите его в файл .npmrc следующим образом:

//your_registry/:_authToken 12345

Или, более надежно, //your_registry/:_authToken $TOKEN и установите для переменной среды TOKEN значение 12345 в другом месте.

Что я не могу выяснить, как это сделать, это использовать npm view против частного npm реестра, без записи в файл .npmrc .

Я планирую выполнять несколько запросов параллельно с одной и той же машины, поэтому, чтобы избежать условий гонки в файле .npmrc, я бы предпочел пройти аутентификацию непосредственно в каждой команде. Я предполагаю, что с токеном аутентификации это просто простая команда curl, но мне не повезло найти информацию о том, как работает NPM API. (npm-registry-client, похоже, ничего не делает для просмотра / поиска; он имеет access, который устанавливает уровень доступа).

Есть ли я упустить что-то ослепительно очевидное? Где найти руководство по формату запроса для просмотра и / или поиска в реестре NPM? Что такое команда curl, которая включает отправку токена авторизации, имени пакета и версии и получает некоторые указания на то, существует ли она?

1 Ответ

0 голосов
/ 16 января 2020

Нашел ответ здесь: https://github.com/npm/registry/blob/master/docs/user/authentication.md

#!/bin/sh
curl -H 'Authorization: Bearer $TOKEN' https://your_registry/$PACKAGE/$VERSION 

Если пакет не существует, он вернет {}. Если это произойдет, вы получите информацию о пакете.

...