패키지 개념 - Amazon CodeCatalyst

패키지 개념

다음은 CodeCatalyst에서 패키지를 관리, 게시 또는 사용할 때 알아야 할 몇 가지 개념 및 용어입니다.

패키지

패키지는 소프트웨어와 모든 종속성을 해결하고 소프트웨어를 설치하는 데 필요한 메타데이터를 포함한 번들입니다. CodeCatalyst는 npm 패키지 형식을 지원합니다.

패키지는 다음으로 구성됩니다.

  • 이름(예: webpack는 널리 사용되는 npm 패키지의 이름)

  • 선택적 네임스페이스(예: @types/node@types)

  • 버전 세트(예: 1.0.0, 1.0.1, 1.0.2)

  • 패키지 수준 메타데이터(예: npm dist 태그)

패키지 네임스페이스

일부 패키지 형식은 계층적 패키지 이름을 지원하여 패키지를 논리적 그룹으로 구성할 수 있고 이름 충돌을 방지하는 데 도움이 됩니다. 이름이 같은 패키지는 다른 네임스페이스에 저장할 수 있습니다. 예를 들어 npm은 범위를 지원하며 npm 패키지 @types/node@types의 범위 및 node의 이름을 지닙니다. @types 범위에는 다른 패키지 이름이 많습니다. CodeCatalyst에서 범위('유형')는 패키지 네임스페이스라고 하고 이름('노드')은 패키지 이름이라고 합니다. Maven 패키지의 경우 패키지 네임스페이스는 Maven groupID에 해당합니다. org.apache.logging.log4j:log4j Maven 패키지에는 org.apache.logging.log4j groupID(패키지 네임스페이스)와 log4j artifactID(패키지 이름)가 있습니다. Python와 같은 일부 패키지 형식은 npm 범위 또는 Maven groupID와 유사한 개념의 계층적 이름을 지원하지 않습니다. 패키지 이름을 그룹화하는 방법이 없으면 이름 충돌을 피하기가 더 어려울 수 있습니다.

패키지 버전

패키지 버전은 패키지의 특정 버전(예: @types/node@12.6.9)을 식별합니다. 버전 번호 형식과 의미 체계는 패키지 형식에 따라 다릅니다. 예를 들어, npm 패키지 버전은 의미 체계 버전 관리 사양을 준수해야 합니다. CodeCatalyst 패키지 버전은 버전 식별자, 패키지 버전 수준 메타데이터 및 자산 세트로 구성됩니다.

자산

자산은 패키지 버전(예: npm .tgz 파일, Maven POM 및 JAR 파일)과 관련된 CodeCatalyst에 저장된 개별 파일입니다.

패키지 리포지토리

CodeCatalyst 패키지 리포지토리에는 패키지 세트가 포함되어 있으며, 이 세트에 포함된 각 패키지 버전자산 세트에 매핑됩니다. 패키지 리포지토리는 다국어 개체이며, 따라서 지원되는 모든 유형의 패키지가 단일 리포지토리에 포함될 수 있습니다. 각 패키지 리포지토리는 NuGet CLIs(nuget, dotnet), npm CLI, Maven CLI(mvn) 및 Python CLI(piptwine)와 같은 도구를 사용하여 패키지를 가져오고 게시하기 위한 엔드포인트를 노출합니다. 각 스페이스에서 생성할 수 있는 패키지 리포지토리 수를 포함하여 CodeCatalyst 패키지 할당량에 대한 자세한 내용은 패키지 할당량 섹션을 참조하세요.

패키지 리포지토리를 업스트림으로 설정하여 다른 패키지 리포지토리에 연결할 수 있습니다. 리포지토리가 업스트림으로 설정된 경우 업스트림의 모든 패키지와 체인의 추가 업스트림 리포지토리를 사용할 수 있습니다. 자세한 내용은 업스트림 리포지토리 섹션을 참조하세요.

게이트웨이 리포지토리는 공식 외부 패키지 권한에서 패키지를 가져와 저장하는 특별한 유형의 패키지 리포지토리입니다. 자세한 내용은 게이트웨이 리포지토리 섹션을 참조하세요.

업스트림 리포지토리

CodeCatalyst를 사용하여 두 패키지 리포지토리 간에 업스트림 관계를 만들 수 있습니다. 다운스트림 리포지토리의 패키지 리포지토리 엔드포인트에서 패키지 리포지토리의 패키지 버전에 액세스할 수 있는 경우 해당 패키지 리포지토리는 다른 패키지 리포지토리의 업스트림입니다. 업스트림 관계를 사용하면 두 패키지 리포지토리의 내용이 클라이언트의 관점에서 효과적으로 병합됩니다.

예를 들어 패키지 관리자가 리포지토리에 없는 패키지 버전을 요청하는 경우 CodeCatalyst는 패키지 버전에 대해 구성된 업스트림 리포지토리를 검색합니다. 업스트림 리포지토리는 구성된 순서대로 검색되며 패키지가 발견되면 CodeCatalyst가 검색을 중지합니다.

게이트웨이 리포지토리

게이트웨이 리포지토리는 지원되는 외부 공식 패키지 권한에 연결되는 특수한 유형의 패키지 리포지토리입니다. 게이트웨이 리포지토리를 업스트림 리포지토리로 추가할 때 해당 공식 패키지 권한의 패키지를 사용할 수 있습니다. 다운스트림 리포지토리는 퍼블릭 리포지토리와 통신하지 않으며, 대신 모든 것이 게이트웨이 리포지토리가 중재합니다. 이러한 방식으로 사용되는 패키지는 게이트웨이 리포지토리와 원래 요청을 받은 다운스트림 리포지토리 모두에 저장됩니다.

게이트웨이 리포지토리는 사전 정의되어 있지만 사용할 각 프로젝트에서 생성해야 합니다. 다음 목록에는 CodeCatalyst에서 생성할 수 있는 모든 게이트웨이 리포지토리와 게이트웨이 리포지토리가 연결된 패키지 권한이 포함되어 있습니다.

  • npm-public-registry-gateway는 npmjs.com에서 npm 패키지를 제공합니다.

  • maven-central-gateway는 Maven Central 리포지토리에서 Maven 패키지를 제공합니다.

  • google-android-gateway는 Google Android에서 Maven 패키지를 제공합니다.

  • commonsware-gateway는 CommonsWare에서 Maven 패키지를 제공합니다.

  • gradle-plugins-gateway는 Gradle Plugins에서 Maven 패키지를 제공합니다.

  • nuget-gallery-gateway는 NuGet Gallery에서 NuGet 패키지를 제공합니다.

  • pypi-gateway는 Python Package Index에서 Python 패키지를 제공합니다.