Meminta versi paket dengan repositori hulu - Amazon CodeCatalyst

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Meminta versi paket dengan repositori hulu

Contoh berikut menunjukkan skenario yang mungkin ketika manajer paket meminta paket dari repositori CodeCatalyst paket yang memiliki repositori upstream.

Untuk contoh ini, manajer paket, sepertinpm, meminta versi paket dari repositori paket bernama downstream yang memiliki beberapa repositori upstream. Ketika paket diminta, hal berikut dapat terjadi:

  • Jika downstream berisi versi paket yang diminta, akan dikembalikan ke klien.

  • Jika downstream tidak berisi versi paket yang diminta, CodeCatalyst cari di repositori upstream, dalam downstream urutan pencarian yang dikonfigurasi. Jika versi paket ditemukan, referensi untuk itu akan disalin ke downstream, dan versi paket dikembalikan ke klien.

  • Jika tidak ada downstream atau repositori upstream yang berisi versi paket, Not Found respons HTTP 404 dikembalikan ke klien.

Jumlah maksimum repositori hulu langsung yang diizinkan untuk satu repositori adalah 10. Jumlah maksimum repositori yang CodeCatalyst dicari saat versi paket diminta adalah 25.

Retensi paket dari repositori hulu

Jika versi paket yang diminta ditemukan di repositori upstream, referensi untuk itu dipertahankan dan selalu tersedia di repositori yang memintanya. Ini memastikan bahwa Anda memiliki akses ke paket Anda jika ada pemadaman tak terduga dari repositori upstream. Versi paket yang dipertahankan tidak terpengaruh oleh salah satu dari berikut ini:

  • Menghapus repositori hulu.

  • Memutuskan koneksi repositori hulu dari repositori hilir.

  • Menghapus versi paket dari repositori hulu.

  • Mengedit versi paket di repositori hulu (misalnya, dengan menambahkan aset baru ke dalamnya).

Mengambil paket melalui hubungan hulu

CodeCatalyst dapat mengambil paket melalui beberapa repositori tertaut yang disebut repositori upstream. Jika repositori CodeCatalyst paket memiliki koneksi upstream ke repositori CodeCatalyst paket lain yang memiliki koneksi upstream ke repositori gateway, permintaan paket yang tidak ada di repositori upstream disalin dari repositori eksternal. Misalnya, pertimbangkan konfigurasi berikut: repositori bernama repo-A memiliki koneksi upstream ke repositori gateway,. npm-public-registry-gateway npm-public-registry-gatewaymemiliki koneksi upstream ke repositori paket publik, https://npmjs.com.

Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.

Jika npm dikonfigurasi untuk menggunakan repo-A repositori, menjalankan npm install memulai penyalinan paket dari https://npmjs.com ke. npm-public-registry-gateway Versi yang dipasang juga ditarik ke dalam repo-A. Contoh berikut menginstal 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

Setelah berjalannpm install, hanya repo-A berisi versi terbaru (lodash 4.17.20) karena itulah versi yang diambil oleh npm fromrepo-A.

Karena npm-public-registry-gateway memiliki koneksi upstream eksternal ke https://npmjs.com, semua versi paket yang diimpor dari https://npmjs.com disimpan dinpm-public-registry-gateway. Versi paket ini dapat diambil oleh repositori hilir mana pun dengan koneksi hulu yang mengarah ke. npm-public-registry-gateway

Isi npm-public-registry-gateway menyediakan cara bagi Anda untuk melihat semua paket dan versi paket yang diimpor dari https://npmjs.com dari waktu ke waktu.

Retensi paket dalam repositori menengah

CodeCatalyst memungkinkan Anda untuk rantai repositori hulu. Misalnya, repo-A dapat memiliki repo-B sebagai repositori upstream dan repo-B dapat memiliki repo-C sebagai repositori upstream. Konfigurasi ini membuat versi paket di repo-B dan repo-C tersedia dari repo-A.

Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.

Ketika manajer paket terhubung ke repositori repo-A dan mengambil versi paket dari repositorirepo-C, versi paket tidak dipertahankan dalam repositori. repo-B Versi paket hanya disimpan di repositori hilir terjauh, yang dalam contoh ini adalah. repo-A Itu tidak disimpan di repositori perantara apa pun. Ini juga berlaku untuk rantai yang lebih panjang; misalnya, jika ada empat repositori:repo-A,repo-B,repo-C, danrepo-D, dan manajer paket yang terhubung untuk repo-A mengambil versi paket darirepo-D, versi paket akan dipertahankan repo-A tetapi tidak di atau. repo-B repo-C

Perilaku retensi paket serupa saat menarik versi paket dari repositori paket publik, kecuali bahwa versi paket selalu dipertahankan di repositori gateway yang memiliki koneksi hulu langsung ke repositori publik. Misalnya, repo-A memiliki repo-B sebagai repositori hulu. repo-Bmemiliki npm-public-registry-gateway sebagai repositori upstream, yang memiliki koneksi upstream ke repositori publik, npmjs.com; lihat diagram di bawah ini.

Diagram repositori hulu yang menunjukkan tiga repositori dirantai bersama dengan koneksi hulu eksternal ke npmjs.com.

Jika manajer paket terhubung untuk repo-A meminta versi paket tertentu, lodash 4.17.20 misalnya, dan versi paket tidak ada di salah satu dari tiga repositori, itu akan diambil dari npmjs.com. Ketika lodash 4.17.20 diambil, itu dipertahankan karena itu adalah repositori hilir terjauh dan repo-A npm-public-registry-gateway karena memiliki koneksi hulu ke repositori eksternal publik, npmjs.com. lodash 4.17.20 tidak dipertahankan repo-B karena itu adalah repositori perantara.