3

この取り組みの目的は、パッケージ バージョンがプライベート レジストリに存在するかどうかを、ファイル システムや構成ファイルに触れることなくテストできるようにすることです。公開レジストリのパッケージの場合、これは完全に単純です。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 機能であると解釈します)。

プライベート レジストリと通信できるようにするために、CI/CD ワークフローで実行するための npm の指示.npmrcに従って、クエリで認証トークンを使用できます。次のようにファイルに入れます。

//your_registry/:_authToken 12345

または、より安全に、環境変数を別の場所//your_registry/:_authToken $TOKENに設定します。TOKEN12345

ファイル書き込むことなく、プライベートレジストリに対して使用する方法がわかりませんnpm viewnpm.npmrc

同じマシンから複数のクエリを並行して実行する予定なので、.npmrcファイル内の競合状態を避けるために、各コマンドで認証を直接渡すことをお勧めします。認証トークンを使用すると、これは単純なcurlコマンドに過ぎないと思いますが、NPM API がどのように機能するかについての情報を見つけることができませんでした。(npm-registry-clientは、表示/検索に関連することは何もしていないようです。アクセス レベルaccess設定する機能があります)。

私は盲目的に明らかな何かを見逃していますか?NPM レジストリの表示および/または検索機能のリクエスト形式に関するガイドはどこにありますか? curl認証トークン、パッケージ名、およびバージョンの送信を含み、存在するかどうかの何らかの指示を受け取るコマンドは何ですか?

4

1 に答える 1

4

ここで答えを見つけました: https://github.com/npm/registry/blob/master/docs/user/authentication.md

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

パッケージが存在しない場合は、 が返され{}ます。存在する場合は、パッケージ情報を取得します。

于 2020-01-16T15:17:19.690 に答える