翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アップストリームリポジトリを持つパッケージバージョンのリクエスト
次の例は、パッケージマネージャーがアップストリームリポジトリを持つ CodeCatalyst パッケージリポジトリからパッケージをリクエストする場合のシナリオを示しています。
この例では、npm
のようなパッケージマネージャーが、複数のアップストリームリポジトリを持つ downstream
という名前のパッケージリポジトリからパッケージバージョンをリクエストします。パッケージがリクエストされると、次のことが発生する可能性があります。
-
リクエストされたパッケージバージョンが
downstream
に含まれる場合、クライアントにリターンされます。 -
リクエストされたパッケージバージョンが
downstream
にない場合、CodeCatalyst はdownstream
のアップストリームリポジトリでこのパッケージバージョンを検索します。パッケージバージョンが見つかると、そのバージョンへのリファレンスがdownstream
にコピーされます、そしてパッケージのバージョンがクライアントに返されます。 -
downstream
にもそのアップストリームリポジトリにもパッケージバージョンがない場合、クライアントには HTTP 404Not Found
レスポンスが返されます。
1 つのリポジトリに許可される直接アップストリームリポジトリの最大数は 10 です。CodeCatalyst がパッケージバージョンがリクエストされた際に検索するリポジトリの最大数は 25 です。
アップストリームリポジトリからのパッケージの保持
リクエストされたパッケージバージョンが、アップストリームリポジトリで見つかった場合、そのバージョンのリファレンスは保持され、リクエスト元のダウンストリームリポジトリで常時利用できます。これにより、アップストリームリポジトリが予期せず停止した場合でも、パッケージにアクセスできます。保持されたパッケージバージョンは、次のいずれの影響も受けません:
-
アップストリームリポジトリの削除。
-
アップストリームリポジトリのダウンストリームリポジトリからの切断。
-
アップストリームリポジトリからのパッケージバージョンの削除。
-
アップストリームリポジトリのパッケージバージョンの編集(例えば、新しいアセットを追加するなど)。
アップストリームの関係を通じてパッケージを取得する
CodeCatalyst は、アップストリームリポジトリと呼ばれる複数のリンクされたリポジトリを介してパッケージを取得できます。CodeCatalyst パッケージリポジトリが、ゲートウェイリポジトリへのアップストリーム接続を持つ別の CodeCatalyst パッケージリポジトリへのアップストリーム接続を持っている場合、アップストリームリポジトリにないパッケージのリクエストは、外部リポジトリからコピーされます。例えば、repo-A
という名前のリポジトリにゲートウェイリポジトリ npm-public-registry-gateway
へのアップストリーム接続があるとします。npm-public-registry-gateway
にはパブリックパッケージリポジトリ https://npmjs.com

もし npm
が repo-A
リポジトリを使用するよう設定されていた場合、npm install
の実行によりhttps://npmjs.comnpm-public-registry-gateway
へのパッケージのコピーが開始されます。インストールされているバージョンもrepo-A
プルされます。次の例では、lodash
がインストールされます。
$ npm config get registry https://packages.
region
.codecatalyst.aws/npm/space-name
/proj-name
/repo-name
/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s
npm install
の実行後、repo-A
には最新バージョン (lodash 4.17.20
)のみが含まれています。なぜなら、それが npm
によって repo-A
から取得されたバージョンだからです。
npm-public-registry-gateway
が https://npmjs.comnpm-public-registry-gateway
に保存されます。これらのパッケージバージョンは、npm-public-registry-gateway
とのアップストリーム関係を持つ任意のダウンストリームリポジトリによって取得されている可能性があります。
npm-public-registry-gateway
の内容から、https://npmjs.com
中間リポジトリでのパッケージの保持
CodeCatalyst を使用すると、アップストリームリポジトリを連結できます。例えば、repo-A
に repo-B
を、repo-B
に repo-C
をアップストリームとして設定できます。この設定により、repo-B
とrepo-C
にあるパッケージバージョンがrepo-A
から入手可能になります。

パッケージマネージャーがリポジトリ repo-A
に接続し、リポジトリ repo-C
からパッケージバージョンを取得する場合、そのパッケージバージョンはリポジトリ repo-B
に保持されません。パッケージバージョンは、最も下流のリポジトリにのみ保持されます。この例では、repo-A
にのみ保持されます。中間リポジトリには保持されません。これは、長いチェーンにも当てはまります。例えば、repo-A
、repo-B
、repo-C
repo-D
という 4 つのリポジトリがあり、repo-A
に接続しているパッケージマネージャーが、repo-D
からパッケージバージョンを取得した場合、そのパッケージバージョンは repo-A
に保持されますが、repo-B
や repo-C
には保持されません。
パッケージ保持に関する動作は、外部リポジトリからパッケージバージョンをプルする場合と同様ですが、パッケージバージョンはパブリックリポジトリへの直接のアップストリーム接続を持つゲートウェイリポジトリに保持されます。例えば、repo-A
は repo-B
をアップストリームリポジトリとしています。repo-B
は npm-public-registry-gateway
をアップストリームリポジトリとしており、このリポジトリはパブリックリポジトリ npmjs.com とアップストリーム接続されています。次の図を参照してください。

repo-A
に接続しているパッケージマネージャーが、例えば lodash 4.17.20 という特定のパッケージバージョンをリクエストし、そのパッケージバージョンが 3 つのリポジトリのいずれにも存在しない場合は、npmjs.com から取得されます。lodash 4.17.20 が取得されると、最も下流のリポジトリである repo-A
と、外部のパブリックリポジトリである npmjs.com へのアップストリーム接続がある npm-public-registry-gateway
に保持されます。lodash 4.17.20 は中間リポジトリである repo-B
には保持されません。