InfoGrab Docs

npm API

요약

이 API를 사용하여 npm 패키지 관리자 클라이언트와 상호작용합니다. 이 API는 npm 패키지 관리자 클라이언트에서 사용하며 수동으로 사용하기 위한 것이 아닙니다. 이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다.

이 API를 사용하여 npm 패키지 관리자 클라이언트와 상호작용합니다.

Warning

이 API는 npm 패키지 관리자 클라이언트에서 사용하며 수동으로 사용하기 위한 것이 아닙니다.

이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다. 지원되는 헤더 및 토큰 유형에 대한 자세한 내용은 npm 패키지 레지스트리 설명서를 참조하세요. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.

패키지 다운로드#

프로젝트의 지정된 npm 패키지를 다운로드합니다. 이 URL은 메타데이터 엔드포인트에서 제공됩니다.

GET projects/:id/packages/npm/:package_name/-/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
package_name string 패키지 이름.
file_name string 패키지 파일 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@my-scope/my-pkg-0.0.1.tgz"

파일로 출력 저장:

curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@my-scope/my-pkg-0.0.1.tgz" >> @myscope/my-pkg-0.0.1.tgz

현재 디렉토리의 @myscope/my-pkg-0.0.1.tgz에 다운로드한 파일을 씁니다.

패키지 파일 업로드#

지정된 프로젝트의 패키지를 업로드합니다.

PUT projects/:id/packages/npm/:package_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
package_name string 패키지 이름.
versions string 패키지 버전 정보.
curl --request PUT
     --header "Content-Type: application/json"
     --data @./path/to/metadata/file.json
     --header "Authorization: Bearer <personal_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope%2fmy-pkg"

메타데이터 파일 내용은 npm에서 생성되지만 다음과 유사합니다:

{
    "_attachments": {
        "@myscope/my-pkg-1.3.7.tgz": {
            "content_type": "application/octet-stream",
            "data": "H4sIAAAAAAAAE+1TQUvDMBjdeb/iI4edZEldV2dPwhARPIjiyXlI26zN1iYhSeeK7L+bNJtednMg4l4OKe+9PF7DF0XzNS0ZVmEfr4wUgxODEJLEMRzjPRJyCYPJNCFRlCTE+dzH1PvJqYscQ2ss1a7KT3PCv8DX/kfwMQRAgjYMpYBuIoIzKtwy6MILG6YNl8Jr0XgyvgpswUyuubJ75TGMDuSaUcsKyDooa1C6De6G8t7GRcG2br4CGxKME3wDR1hmrLexvJKwQLdaS52CkOAFMIrlfMlZsUAwGgHbcgsRcid3fdqade9SFz7u9a1naGsrqX3gHbcPNINDyydWcmN1By+W19x2oU7NcyZMfwn3z/PAqTaruanmUix5+V3UXVKq9yEoRZW1yqQYl9zWNBvnssFUcbyJsdJyxXJrcHQdz8gsTg6PzGChGty3H+6Gvz0BZ5xxxn/FJ1EDRNIACAAA",
            "length": 354
        }
    },
    "_id": "@myscope/my-pkg",
    "description": "Package created by me",
    "dist-tags": {
        "latest": "1.3.7"
    },
    "name": "@myscope/my-pkg",
    "readme": "ERROR: No README data found!",
    "versions": {
        "1.3.7": {
            "_id": "@myscope/my-pkg@1.3.7",
            "_nodeVersion": "12.18.4",
            "_npmVersion": "6.14.6",
            "author": {
                "name": "GitLab package registry Utility"
            },
            "description": "Package created by me",
            "dist": {
                "integrity": "sha512-loy16p+Dtw2S43lBmD3Nye+t+Vwv7Tbhv143UN2mwcjaHJyBfGZdNCTXnma3gJCUSE/AR4FPGWEyCOOTJ+ev9g==",
                "shasum": "4a9dbd94ca6093feda03d909f3d7e6bd89d9d4bf",
                "tarball": "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@myscope/my-pkg-1.3.7.tgz"
            },
            "keywords": [],
            "license": "ISC",
            "main": "index.js",
            "name": "@myscope/my-pkg",
            "publishConfig": {
                "@myscope:registry": "https://gitlab.example.com/api/v4/projects/1/packages/npm"
            },
            "readme": "ERROR: No README data found!",
            "scripts": {
                "test": "echo \"Error: no test specified\" && exit 1"
            },
            "version": "1.3.7"
        }
    }
}

라우트 접두사#

나머지 라우트의 경우, 각각 다른 범위에서 요청하는 두 세트의 동일한 라우트가 있습니다:

  • 인스턴스 수준 접두사를 사용하여 전체 인스턴스 범위에서 요청합니다.
  • 프로젝트 수준 접두사를 사용하여 단일 프로젝트 범위에서 요청합니다.
  • 그룹 수준 접두사를 사용하여 그룹 범위에서 요청합니다.

이 문서의 예시는 모두 프로젝트 수준 접두사를 사용합니다.

인스턴스 수준#

/packages/npm

프로젝트 수준#

/projects/:id/packages/npm
속성 유형 필수 설명
id string 프로젝트 ID 또는 전체 프로젝트 경로.

그룹 수준#

히스토리
  • GitLab 16.0에서 npm_group_level_endpoints라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됨.
  • GitLab 16.1에서 일반적으로 사용 가능합니다. 기능 플래그 npm_group_level_endpoints 제거됨.
/groups/:id/-/packages/npm
속성 유형 필수 설명
id string 그룹 ID 또는 전체 그룹 경로.

패키지 메타데이터 검색#

지정된 패키지의 메타데이터를 검색합니다.

GET <route-prefix>/:package_name
속성 유형 필수 설명
package_name string 패키지 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg"

응답 예시:

{
  "name": "@myscope/my-pkg",
  "versions": {
    "0.0.2": {
      "name": "@myscope/my-pkg",
      "version": "0.0.1",
      "dist": {
        "shasum": "93abb605b1110c0e3cca0a5b805e5cb01ac4ca9b",
        "tarball": "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@myscope/my-pkg-0.0.1.tgz"
      }
    }
  },
  "dist-tags": {
    "latest": "0.0.1"
  }
}

응답의 URL은 요청에 사용된 것과 동일한 라우트 접두사를 가집니다. 인스턴스 수준 라우트로 요청하면 반환된 URL에 /api/v4/packages/npm이 포함됩니다.

Dist-Tags#

모든 dist-tag 목록#

지정된 패키지의 모든 dist-tag를 나열합니다.

GET <route-prefix>/-/package/:package_name/dist-tags
속성 유형 필수 설명
package_name string 패키지 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags"

응답 예시:

{
  "latest": "2.1.1",
  "stable": "1.0.0"
}

응답의 URL은 요청에 사용된 것과 동일한 라우트 접두사를 가집니다. 인스턴스 수준 라우트로 요청하면 반환된 URL에 /api/v4/packages/npm이 포함됩니다.

dist-tag 생성 또는 업데이트#

패키지의 지정된 dist-tag를 생성하거나 업데이트합니다.

PUT <route-prefix>/-/package/:package_name/dist-tags/:tag
속성 유형 필수 설명
package_name string 패키지 이름.
tag string 생성하거나 업데이트할 태그.
version string 태그할 버전.
curl --request PUT --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"

이 엔드포인트는 204 No Content로 성공 응답을 반환합니다.

dist-tag 삭제#

패키지의 지정된 dist-tag를 삭제합니다.

DELETE <route-prefix>/-/package/:package_name/dist-tags/:tag
속성 유형 필수 설명
package_name string 패키지 이름.
tag string 생성하거나 업데이트할 태그.
curl --request DELETE --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"

이 엔드포인트는 204 No Content로 성공 응답을 반환합니다.

npm API

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 API를 사용하여 npm 패키지 관리자 클라이언트와 상호작용합니다. 이 API는 npm 패키지 관리자 클라이언트에서 사용하며 수동으로 사용하기 위한 것이 아닙니다. 이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다.

이 API를 사용하여 npm 패키지 관리자 클라이언트와 상호작용합니다.

Warning

이 API는 npm 패키지 관리자 클라이언트에서 사용하며 수동으로 사용하기 위한 것이 아닙니다.

이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다. 지원되는 헤더 및 토큰 유형에 대한 자세한 내용은 npm 패키지 레지스트리 설명서를 참조하세요. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.

패키지 다운로드#

프로젝트의 지정된 npm 패키지를 다운로드합니다. 이 URL은 메타데이터 엔드포인트에서 제공됩니다.

GET projects/:id/packages/npm/:package_name/-/:file_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
package_name string 패키지 이름.
file_name string 패키지 파일 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@my-scope/my-pkg-0.0.1.tgz"

파일로 출력 저장:

curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@my-scope/my-pkg-0.0.1.tgz" >> @myscope/my-pkg-0.0.1.tgz

현재 디렉토리의 @myscope/my-pkg-0.0.1.tgz에 다운로드한 파일을 씁니다.

패키지 파일 업로드#

지정된 프로젝트의 패키지를 업로드합니다.

PUT projects/:id/packages/npm/:package_name
속성 유형 필수 설명
id string 프로젝트의 ID 또는 전체 경로.
package_name string 패키지 이름.
versions string 패키지 버전 정보.
curl --request PUT
     --header "Content-Type: application/json"
     --data @./path/to/metadata/file.json
     --header "Authorization: Bearer <personal_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope%2fmy-pkg"

메타데이터 파일 내용은 npm에서 생성되지만 다음과 유사합니다:

{
    "_attachments": {
        "@myscope/my-pkg-1.3.7.tgz": {
            "content_type": "application/octet-stream",
            "data": "H4sIAAAAAAAAE+1TQUvDMBjdeb/iI4edZEldV2dPwhARPIjiyXlI26zN1iYhSeeK7L+bNJtednMg4l4OKe+9PF7DF0XzNS0ZVmEfr4wUgxODEJLEMRzjPRJyCYPJNCFRlCTE+dzH1PvJqYscQ2ss1a7KT3PCv8DX/kfwMQRAgjYMpYBuIoIzKtwy6MILG6YNl8Jr0XgyvgpswUyuubJ75TGMDuSaUcsKyDooa1C6De6G8t7GRcG2br4CGxKME3wDR1hmrLexvJKwQLdaS52CkOAFMIrlfMlZsUAwGgHbcgsRcid3fdqade9SFz7u9a1naGsrqX3gHbcPNINDyydWcmN1By+W19x2oU7NcyZMfwn3z/PAqTaruanmUix5+V3UXVKq9yEoRZW1yqQYl9zWNBvnssFUcbyJsdJyxXJrcHQdz8gsTg6PzGChGty3H+6Gvz0BZ5xxxn/FJ1EDRNIACAAA",
            "length": 354
        }
    },
    "_id": "@myscope/my-pkg",
    "description": "Package created by me",
    "dist-tags": {
        "latest": "1.3.7"
    },
    "name": "@myscope/my-pkg",
    "readme": "ERROR: No README data found!",
    "versions": {
        "1.3.7": {
            "_id": "@myscope/my-pkg@1.3.7",
            "_nodeVersion": "12.18.4",
            "_npmVersion": "6.14.6",
            "author": {
                "name": "GitLab package registry Utility"
            },
            "description": "Package created by me",
            "dist": {
                "integrity": "sha512-loy16p+Dtw2S43lBmD3Nye+t+Vwv7Tbhv143UN2mwcjaHJyBfGZdNCTXnma3gJCUSE/AR4FPGWEyCOOTJ+ev9g==",
                "shasum": "4a9dbd94ca6093feda03d909f3d7e6bd89d9d4bf",
                "tarball": "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@myscope/my-pkg-1.3.7.tgz"
            },
            "keywords": [],
            "license": "ISC",
            "main": "index.js",
            "name": "@myscope/my-pkg",
            "publishConfig": {
                "@myscope:registry": "https://gitlab.example.com/api/v4/projects/1/packages/npm"
            },
            "readme": "ERROR: No README data found!",
            "scripts": {
                "test": "echo \"Error: no test specified\" && exit 1"
            },
            "version": "1.3.7"
        }
    }
}

라우트 접두사#

나머지 라우트의 경우, 각각 다른 범위에서 요청하는 두 세트의 동일한 라우트가 있습니다:

  • 인스턴스 수준 접두사를 사용하여 전체 인스턴스 범위에서 요청합니다.
  • 프로젝트 수준 접두사를 사용하여 단일 프로젝트 범위에서 요청합니다.
  • 그룹 수준 접두사를 사용하여 그룹 범위에서 요청합니다.

이 문서의 예시는 모두 프로젝트 수준 접두사를 사용합니다.

인스턴스 수준#

/packages/npm

프로젝트 수준#

/projects/:id/packages/npm
속성 유형 필수 설명
id string 프로젝트 ID 또는 전체 프로젝트 경로.

그룹 수준#

히스토리
  • GitLab 16.0에서 npm_group_level_endpoints라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됨.
  • GitLab 16.1에서 일반적으로 사용 가능합니다. 기능 플래그 npm_group_level_endpoints 제거됨.
/groups/:id/-/packages/npm
속성 유형 필수 설명
id string 그룹 ID 또는 전체 그룹 경로.

패키지 메타데이터 검색#

지정된 패키지의 메타데이터를 검색합니다.

GET <route-prefix>/:package_name
속성 유형 필수 설명
package_name string 패키지 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg"

응답 예시:

{
  "name": "@myscope/my-pkg",
  "versions": {
    "0.0.2": {
      "name": "@myscope/my-pkg",
      "version": "0.0.1",
      "dist": {
        "shasum": "93abb605b1110c0e3cca0a5b805e5cb01ac4ca9b",
        "tarball": "https://gitlab.example.com/api/v4/projects/1/packages/npm/@myscope/my-pkg/-/@myscope/my-pkg-0.0.1.tgz"
      }
    }
  },
  "dist-tags": {
    "latest": "0.0.1"
  }
}

응답의 URL은 요청에 사용된 것과 동일한 라우트 접두사를 가집니다. 인스턴스 수준 라우트로 요청하면 반환된 URL에 /api/v4/packages/npm이 포함됩니다.

Dist-Tags#

모든 dist-tag 목록#

지정된 패키지의 모든 dist-tag를 나열합니다.

GET <route-prefix>/-/package/:package_name/dist-tags
속성 유형 필수 설명
package_name string 패키지 이름.
curl --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags"

응답 예시:

{
  "latest": "2.1.1",
  "stable": "1.0.0"
}

응답의 URL은 요청에 사용된 것과 동일한 라우트 접두사를 가집니다. 인스턴스 수준 라우트로 요청하면 반환된 URL에 /api/v4/packages/npm이 포함됩니다.

dist-tag 생성 또는 업데이트#

패키지의 지정된 dist-tag를 생성하거나 업데이트합니다.

PUT <route-prefix>/-/package/:package_name/dist-tags/:tag
속성 유형 필수 설명
package_name string 패키지 이름.
tag string 생성하거나 업데이트할 태그.
version string 태그할 버전.
curl --request PUT --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"

이 엔드포인트는 204 No Content로 성공 응답을 반환합니다.

dist-tag 삭제#

패키지의 지정된 dist-tag를 삭제합니다.

DELETE <route-prefix>/-/package/:package_name/dist-tags/:tag
속성 유형 필수 설명
package_name string 패키지 이름.
tag string 생성하거나 업데이트할 태그.
curl --request DELETE --header "Authorization: Bearer <personal_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"

이 엔드포인트는 204 No Content로 성공 응답을 반환합니다.