正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

npm

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このAPIを使用して、npmパッケージマネージャークライアントとやり取りします。

このAPIは、npmパッケージマネージャークライアントで使用され、手動で使用することを意図したものではありません。

これらのエンドポイントは、標準のAPI認証方式に準拠していません。サポートされているヘッダーとトークンの種類について詳しくは、npmパッケージレジストリのドキュメントを参照してください。文書化されていない認証方式は、将来削除される可能性があります。記載されていない認証方法は、将来削除される可能性があります。

パッケージをダウンロードする

npmパッケージをダウンロードします。このURLは、メタデータエンドポイントによって提供されます。

GET projects/:id/packages/npm/:package_name/-/:file_name
属性必須説明
id文字列はいプロジェクトのIDまたはフルパス。
package_name文字列はいパッケージの名前。
file_name文字列はいパッケージファイルの名前。
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文字列はいプロジェクトのIDまたはフルパス。
package_name文字列はいパッケージの名前。
versions文字列はいパッケージのバージョン情報。
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"
        }
    }
}

ルートプレフィックス

残りのルートには、それぞれ異なるスコープでリクエストを行う、同一のルートが2組あります:

  • インスタンスレベルのプレフィックスを使用して、インスタンス全体のスコープでリクエストを行います。
  • プロジェクトレベルのプレフィックスを使用して、単一プロジェクトのスコープでリクエストを行います。
  • グループレベルのプレフィックスを使用して、グループのスコープでリクエストを行います。

このドキュメントの例はすべて、プロジェクトレベルのプレフィックスを使用しています。

インスタンスレベル

/packages/npm

プロジェクトレベル

/projects/:id/packages/npm
属性必須説明
id文字列はいプロジェクトIDまたは完全なプロジェクトパス。

グループレベル

/groups/:id/-/packages/npm
属性必須説明
id文字列はいグループIDまたはフルグループパス。

メタデータ

指定されたパッケージのメタデータを返します。

GET <route-prefix>/:package_name
属性必須説明
package_name文字列はいパッケージの名前。
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-タグ

タグをリストします

パッケージのdist-タグをリストします。

GET <route-prefix>/-/package/:package_name/dist-tags
属性必須説明
package_name文字列はいパッケージの名前。
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-タグを作成または更新します。

PUT <route-prefix>/-/package/:package_name/dist-tags/:tag
属性必須説明
package_name文字列はいパッケージの名前。
tag文字列はい作成または更新されるタグ。
version文字列はいタグ付けされるバージョン。
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で正常に応答します。

タグを削除する

ディストリビューションタグを削除します。

DELETE <route-prefix>/-/package/:package_name/dist-tags/:tag
属性必須説明
package_name文字列はいパッケージの名前。
tag文字列はい作成または更新されるタグ。
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で正常に応答します。