npm API
npm Packages の API ドキュメントです。
GitLabパッケージレジストリからnpmパッケージをアップロードしてインストールする方法については、npmパッケージレジストリのドキュメントを参照してください。
パッケージのダウンロード
npm パッケージをダウンロードします。このURLはメタデータエンドポイントから提供されます。
GET projects/:id/packages/npm/:package_name/-/:file_name
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
file_name | 文字列です。 | 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 | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
versions | 文字列です。 | 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": "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"
}
}
}
ルートプレフィックス
残りのルートについては、それぞれ異なるスコープでリクエストする2つの同じルートセットがあります:
- インスタンスレベルのプレフィックスを使用して、 インスタンス全体のスコープでリクエストを行います。
- プロジェクトレベルの接頭辞は、単一のプロジェクトのスコープにリクエストするときに使います。
- グループのスコープでリクエストを行うにはグループレベルの接頭辞を使います。
このドキュメントの例では、すべてプロジェクトレベルの接頭辞を使っています。
インスタンスレベル
/packages/npm`
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | グループIDまたはフルグループパス。 |
プロジェクトレベル
/projects/:id/packages/npm`
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトIDまたはプロジェクトのフルパス。 |
グループレベル
/groups/:id/-/packages/npm`
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | グループIDまたはフルグループパス。 |
メタデータ
指定したパッケージのメタデータを返します。
GET <route-prefix>/:package_name
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
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
.
ディストタグ
タグの一覧
GitLab 12.7で導入されました。
パッケージの dist-tags をリストアップします。
GET <route-prefix>/-/package/:package_name/dist-tags
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
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
.
タグの作成または更新
GitLab 12.7で導入されました。
dist-tagを作成または更新します。
PUT <route-prefix>/-/package/:package_name/dist-tags/:tag
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
tag | 文字列です。 | yes | 作成または更新するタグ。 |
version | 文字列です。 | yes | タグ付けされるバージョン。 |
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
で正常に応答します。
タグの削除
GitLab 12.7で導入されました。
distタグを削除します。
DELETE <route-prefix>/-/package/:package_name/dist-tags/:tag
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
tag | 文字列です。 | yes | 作成または更新するタグ。 |
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
で正常に応答します。