npm API
Offering: GitLab.com, Self-managed, GitLab Dedicated
이것은 npm 패키지에 대한 API 문서입니다.
이 API는 npm 패키지 관리 클라이언트에 의해 사용되며, 수동으로 사용할 수 없습니다.
GitLab 패키지 레지스트리에서 npm 패키지를 업로드하고 설치하는 방법에 대한 지침은 npm 패키지 레지스트리 문서를 참조하십시오.
어떤 헤더와 토큰 유형이 지원되는지에 대한 자세한 내용은 npm 패키지 레지스트리 문서를 참조하십시오. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.
패키지 다운로드
npm 패키지를 다운로드합니다. 이 URL은 메타데이터 엔드포인트에 의해 제공됩니다.
GET projects/:id/packages/npm/:package_name/-/:file_name
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id |
string | yes | 프로젝트의 ID 또는 전체 경로. |
package_name |
string | yes | 패키지의 이름. |
file_name |
string | yes | 패키지 파일의 이름. |
curl --header "Authorization: Bearer <personal_access_token>" "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>" "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 | yes | 프로젝트의 ID 또는 전체 경로. |
package_name |
string | yes | 패키지의 이름. |
versions |
string | yes | 패키지 버전 정보. |
curl --request PUT
--header "Content-Type: application/json"
--data @./path/to/metadata/file.json
--header "Authorization: Bearer <personal_access_token>" \
"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": "내가 생성한 패키지",
"dist-tags": {
"latest": "1.3.7"
},
"name": "@myscope/my-pkg",
"readme": "오류: README 데이터가 없습니다!",
"versions": {
"1.3.7": {
"_id": "@myscope/my-pkg@1.3.7",
"_nodeVersion": "12.18.4",
"_npmVersion": "6.14.6",
"author": {
"name": "GitLab 패키지 레지스트리 유틸리티"
},
"description": "내가 생성한 패키지",
"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": "오류: README 데이터가 없습니다!",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "1.3.7"
}
}
}
경로 접두사
남은 경로에 대해, 각기 다른 범위에서 요청을 하는 동일한 경로 두 세트가 있습니다:
- 인스턴스 수준 접두사를 사용하여 전체 인스턴스의 범위에서 요청을 합니다.
- 프로젝트 수준 접두사를 사용하여 단일 프로젝트의 범위에서 요청을 합니다.
- 그룹 수준 접두사를 사용하여 그룹의 범위에서 요청을 합니다.
이 문서의 모든 예는 프로젝트 수준 접두사를 사용합니다.
인스턴스 수준
/packages/npm
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
string | 예 | 그룹 ID 또는 전체 그룹 경로. |
프로젝트 수준
/projects/:id/packages/npm
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
string | 예 | 프로젝트 ID 또는 전체 프로젝트 경로. |
그룹 수준
/groups/:id/-/packages/npm
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
string | 예 | 그룹 ID 또는 전체 그룹 경로. |
메타데이터
주어진 패키지에 대한 메타데이터를 반환합니다.
GET <route-prefix>/:package_name
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
package_name |
string | 예 | 패키지의 이름. |
curl --header "Authorization: Bearer <personal_access_token>" "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-tags를 나열합니다.
GET <route-prefix>/-/package/:package_name/dist-tags
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
package_name |
string | 예 | 패키지의 이름. |
curl --header "Authorization: Bearer <personal_access_token>" "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를 만들거나 업데이트합니다.
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>" "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"
이 엔드포인트는 204 No Content
로 성공적으로 응답합니다.
태그 삭제하기
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>" "https://gitlab.example.com/api/v4/projects/1/packages/npm/-/package/@myscope/my-pkg/dist-tags/stable"
이 엔드포인트는 204 No Content
로 성공적으로 응답합니다.