

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di [Cara bermigrasi dari CodeCatalyst](migration.md).

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

# Konsep paket
<a name="packages-concepts"></a>

Berikut adalah beberapa konsep dan istilah yang perlu diketahui saat mengelola, menerbitkan, atau mengkonsumsi paket CodeCatalyst.

## Paket
<a name="packages-concepts-packages"></a>

*Paket* adalah bundel yang mencakup perangkat lunak dan metadata yang diperlukan untuk menginstal perangkat lunak dan menyelesaikan dependensi apa pun. CodeCatalyst mendukung format paket npm.

Paket terdiri dari:
+ Nama (misalnya, `webpack` adalah nama paket npm populer)
+ [Namespace](#packages-concepts-package-namespaces) opsional (misalnya, `@types` di `@types/node`)
+ Satu set [versi](#packages-concepts-package-versions) (misalnya,`1.0.0`,`1.0.1`,`1.0.2`)
+ Metadata tingkat paket (misalnya, tag dist npm)

## Ruang nama Package
<a name="packages-concepts-package-namespaces"></a>

Beberapa format paket mendukung nama paket hierarkis untuk mengatur paket ke dalam grup logis dan untuk membantu menghindari tabrakan nama. Paket yang memiliki nama yang sama dapat disimpan di ruang nama yang berbeda. Misalnya, npm mendukung cakupan, dan paket npm `@types/node` memiliki cakupan `@types` dan nama. `node` Ada banyak nama paket lainnya dalam cakupan `@types`. Dalam CodeCatalyst, ruang lingkup (“tipe”) disebut sebagai namespace paket, dan nama (“node”) disebut sebagai nama paket. Untuk paket Maven, namespace paket sesuai dengan groupID Maven. Paket Maven `org.apache.logging.log4j:log4j` memiliki groupID (namespace paket) `org.apache.logging.log4j` dan artifactID (nama paket) `log4j`. Beberapa format paket seperti Python tidak mendukung nama hierarkis dengan konsep yang mirip dengan lingkup npm atau Maven GroupId. Jika Anda tidak memiliki cara untuk mengelompokkan nama paket, akan lebih sulit untuk menghindari tabrakan nama.

## Versi paket
<a name="packages-concepts-package-versions"></a>

*Versi paket* mengidentifikasi versi spesifik dari sebuah paket, seperti `@types/node@12.6.9`. Format nomor versi dan semantik bervariasi untuk format paket yang berbeda. Sebagai contoh, npm paket versi harus sesuai dengan [spesifikasi Versioning Semantik](https://semver.org/). Dalam CodeCatalyst, versi paket terdiri dari pengenal versi, package-version-level metadata, dan satu set aset.

## Aset
<a name="packages-concepts-assets"></a>

*Aset* adalah file individual yang disimpan di dalamnya CodeCatalyst yang terkait dengan versi paket, seperti file npm atau `.tgz` file Maven POM atau JAR.

## Package repositori
<a name="packages-concepts-repository"></a>

*Repositori CodeCatalyst paket* [berisi satu set [paket](#packages-concepts-packages), yang berisi [versi paket](#packages-concepts-package-versions), yang masing-masing memetakan ke satu set aset.](#packages-concepts-assets) Package repositories adalah polyglot, artinya repositori tunggal dapat berisi paket dari jenis apa pun yang didukung. Setiap repositori paket mengekspos titik akhir untuk mengambil dan menerbitkan paket menggunakan alat seperti NuGet CLIs (`dotnet`,`nuget`), CLI, Maven CLI ()`npm`, dan Python (dan). `mvn` CLIs `pip` `twine` Untuk informasi tentang kuota paket CodeCatalyst, termasuk berapa banyak repositori paket yang dapat dibuat di setiap ruang, lihat. [Kuota untuk paket](packages-quotas.md)

Anda dapat menautkan repositori paket ke repositori lain dengan mengaturnya sebagai upstream. Ketika repositori disetel sebagai upstream, Anda dapat menggunakan paket apa pun dari upstream serta repositori upstream tambahan dalam rantai. Untuk informasi selengkapnya, lihat [Repositori hulu](#packages-concepts-upstream-repositories).

Gateway repositori adalah jenis khusus dari repositori paket yang menarik dan menyimpan paket dari otoritas paket eksternal resmi. Untuk informasi selengkapnya, lihat [Repositori gateway](#packages-concepts-gateway-repositories).

## Repositori hulu
<a name="packages-concepts-upstream-repositories"></a>

Anda dapat menggunakan CodeCatalyst untuk membuat hubungan hulu antara dua repositori paket. Repositori paket adalah *hulu* dari yang lain ketika versi paket yang dikandungnya dapat diakses dari titik akhir repositori paket dari repositori hilir. Dengan hubungan hulu, isi dari dua repositori paket secara efektif digabungkan dari sudut pandang klien.

Misalnya, jika manajer paket meminta versi paket yang tidak ada di repositori, kemudian CodeCatalyst akan mencari repositori upstream yang dikonfigurasi untuk versi paket. Repositori upstream dicari dalam urutan mereka dikonfigurasi, dan setelah paket ditemukan, CodeCatalyst akan berhenti mencari. 

## Repositori gateway
<a name="packages-concepts-gateway-repositories"></a>

*Repositori gateway* adalah jenis khusus dari repositori paket yang terhubung ke otoritas paket resmi eksternal yang didukung. Saat Anda menambahkan repositori gateway sebagai repositori [upstream](#packages-concepts-upstream-repositories), Anda dapat menggunakan paket dari otoritas paket resmi yang sesuai. Repositori hilir Anda tidak berkomunikasi dengan repositori publik, sebaliknya, semuanya dimediasi oleh repositori gateway. Paket yang dikonsumsi dengan cara ini disimpan di repositori gateway dan repositori hilir yang menerima permintaan asli.

Repositori gateway sudah ditentukan sebelumnya, tetapi harus dibuat di setiap proyek yang akan digunakan. Daftar berikut berisi setiap repositori gateway yang dapat dibuat CodeCatalyst dan otoritas paket yang terhubung dengannya.
+ **npm-public-registry-gateway**menyediakan paket npm dari npmjs.com.
+ **maven-central-gateway**menyediakan paket Maven dari repositori Maven Central.
+ **google-android-gateway**menyediakan paket Maven dari Google Android.
+ **commonsware-gateway** menyediakan paket Maven dari. CommonsWare
+ **gradle-plugins-gateway**menyediakan paket Maven dari Plugin Gradle.
+ **nuget-gallery-gateway**menyediakan NuGet paket dari NuGet Galeri.
+ **pypi-gateway menyediakan** paket Python dari Indeks Paket Python.