Conceptos sobre paquetes
Estos son algunos conceptos y términos que debe conocer cuando administra, publica o consume paquetes en CodeCatalyst.
Paquetes
Un paquete es una agrupación del software y los metadatos necesarios para instalar el software y resolver las dependencias. CodeCatalyst admite el formato de paquete npm.
Un paquete se compone de lo siguiente:
-
Un nombre (por ejemplo,
webpack
es el nombre de un paquete npm conocido). -
Un espacio de nombres opcional (por ejemplo,
@types
en@types/node
). -
Un conjunto de versiones (por ejemplo,
1.0.0
,1.0.1
o1.0.2
). -
Metadatos en el nivel del paquete (por ejemplo, etiquetas dist de npm).
Espacios de nombres en paquetes
Algunos formatos de paquetes admiten nombres de paquetes jerárquicos para organizar los paquetes en grupos lógicos y evitar colisiones de nombres. Los paquetes que tienen el mismo nombre se pueden almacenar en diferentes espacios de nombres. Por ejemplo, npm admite ámbitos: el paquete npm @types/node
tiene un ámbito @types
y un nombre node
. Hay muchos otros nombres de paquetes en el alcance @types
. En CodeCatalyst, el alcance (tipos) se denomina espacio de nombres del paquete y el nombre (nodo) se denomina nombre del paquete. En el caso de los paquetes de Maven, el espacio de nombres del paquete corresponde al ID de grupo de Maven. El paquete Maven org.apache.logging.log4j:log4j
tiene un groupID (espacio de nombres del paquete) de org.apache.logging.log4j
y un artifactID (nombre del paquete) log4j
. Algunos formatos de paquetes, como Python, no admiten nombres jerárquicos con un concepto similar al alcance de npm o al ID de grupo de Maven. Sin una forma de agrupar los nombres de los paquetes, puede resultar más difícil evitar las colisiones de nombres.
Versiones de paquetes
La versión de un paquete identifica la versión específica de un paquete, por ejemplo @types/node@12.6.9
. El formato y la semántica del número de versión varían según los distintos formatos de paquete. Por ejemplo, las versiones del paquete npm deben cumplir con la especificación de control de versiones semántico
Activos
Un activo es un archivo individual almacenado en CodeCatalyst que está asociado a una versión de paquete, como un archivo npm .tgz
o un archivo POM o JAR de Maven.
Repositorios de paquetes
Un repositorio de paquetes en CodeCatalyst contiene un conjunto de paquetes con versiones de paquetes, cada una de las cuales se asigna a un conjunto de activos. Los repositorios de paquetes son políglotas, lo que significa que un único repositorio puede contener paquetes de cualquier tipo compatible. Cada repositorio de paquetes expone puntos de conexión para obtener y publicar paquetes mediante herramientas como las CLI de NuGet (nuget
, dotnet
), la CLI de npm
, la CLI de Maven (mvn
) y las CLI de Python (pip
y twine
). Para obtener más información sobre las cuotas de paquetes en CodeCatalyst, lo que incluye el número de repositorios de paquetes que se pueden crear en cada espacio, consulte Cuotas para paquetes.
Puede vincular un repositorio de paquetes a otro configurándolo como ascendente. Cuando un repositorio está configurado como ascendente, puede usar cualquiera de sus paquetes, así como cualquier repositorio ascendente adicional en la cadena. Para obtener más información, consulte Repositorios ascendentes.
Los repositorios de puerta de enlace son un tipo especial de repositorio de paquetes que extrae y almacena paquetes de las autoridades de paquetes oficiales y externas. Para obtener más información, consulte Repositorios de puerta de enlace.
Repositorios ascendentes
Con CodeCatalyst, puede crear una relación ascendente entre dos repositorios de paquetes. Un repositorio es ascendente con respecto a otro cuando se puede acceder a las versiones de los paquetes que contiene desde el punto de conexión del repositorio descendente. En una relación ascendente, el contenido de los dos repositorios de paquetes se combina desde el punto de vista de un cliente.
Por ejemplo, si un administrador de paquetes solicita una versión de paquete que no existe en un repositorio, CodeCatalyst buscará esa versión en los repositorios ascendentes configurados. La búsqueda en los repositorios ascendentes se lleva a cabo en el orden en el que están configurados y CodeCatalyst deja de buscar en cuanto encuentra el paquete.
Repositorios de puerta de enlace
Un repositorio de puerta de enlace es un tipo especial de repositorio de paquetes que está conectado a una autoridad de paquetes oficial y externa compatible. Al añadir un repositorio de puerta de enlace como repositorio ascendente, puede consumir paquetes de la autoridad de paquetes oficial correspondiente. El repositorio descendente no se comunica con el repositorio público: el repositorio de puerta de enlace hace de intermediario. Los paquetes que se consumen de esta manera se almacenan tanto en el repositorio de puerta de enlace como en el repositorio descendente que recibió la solicitud original.
Los repositorios de puerta de enlace están predefinidos, pero deben crearse en cada proyecto que se vaya a utilizar. La siguiente lista contiene todos los repositorios de puerta de enlace que se pueden crear en CodeCatalyst, así como la autoridad de paquetes a la que están conectados.
-
npm-public-registry-gateway proporciona paquetes npm desde npmjs.com.
-
maven-central-gateway proporciona paquetes Maven desde el repositorio central de Maven.
-
google-android-gateway proporciona paquetes Maven desde Google Android.
-
commonsware-gateway proporciona paquetes Maven desde CommonsWare.
-
gradle-plugins-gateway proporciona paquetes Maven desde Gradle Plugins.
-
nuget-gallery-gateway proporciona paquetes NuGet desde la galería de NuGet.
-
pypi-gateway proporciona paquetes Python desde Python Package Index.