ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

GitHub Packagesで利用するためにnpmを設定する

GitHub Packages にパッケージを公開するよう npm を設定し、GitHub Packages に保存されたパッケージを依存関係として npm プロジェクトで利用できます。

GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 2.22, and GitHub One.


GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 For more information, see "[GitHub's products](/articles/github-s-products)."

ここには以下の内容があります:

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.

デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/testというリポジトリ内のcom.example:testという名前のパッケージを公開します。

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。

To authenticate using a GitHub Actionsのワークフロー:

  • For package registries (PACKAGE-REGISTRY.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME), you can use a GITHUB_TOKEN.
  • For the container registry (ghcr.io/OWNER/IMAGE-NAME), you must use a personal access token.

個人アクセストークンでの認証

GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。

ユーザごとの~/.npmrcファイルを編集して個人アクセストークンを含めるか、コマンドラインからユーザ名と個人アクセストークンを使ってnpmにログインすることによって、npmでGitHub Packagesの認証を受けられます。

To authenticate by adding your personal access token to your ~/.npmrc file, edit the ~/.npmrc file for your project to include the following line, replacing TOKEN with your personal access token. ~/.npmrcファイルが存在しない場合は、新しく作成してください。

//npm.pkg.github.com/:_authToken=TOKEN

npmにログインすることで認証を受けるには、npm loginコマンドを使ってください。USERNAMEはGitHubのユーザ名で、TOKENは個人アクセストークンで、PUBLIC-EMAIL-ADDRESSはメールアドレスで置き換えてください。

$ npm login --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS

GITHUB_TOKENでの認証

GitHub Actionsワークフローを使っているなら、GITHUB_TOKENを使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_TOKENでの認証」を参照してください。

パッケージを公開する

デフォルトでは、GitHub Packagesはpackage.jsonファイルのnameフィールドで指定されたGitHubのリポジトリにパッケージを公開します。 たとえば@my-org/testという名前のパッケージをGitHubリポジトリのmy-org/testに公開します。 パッケージディレクトリにREADME.mdファイルを置くことで、パッケージリスティングページのためのまとめを追加できます。 詳しい情報については、npmのドキュメンテーション中の「Working with package.json」及び「How to create Node.js Modules」を参照してください。

URLフィールドをpackage.jsonファイルに含めることで、同じGitHubのリポジトリに複数のパッケージを公開できます。 詳しい情報については「同じリポジトリへの複数パッケージの公開」を参照してください。

プロジェクト内にあるローカルの .npmrc ファイルか、package.jsonpublishConfig オプションを使って、スコープのマッピングを設定できます。 GitHub Packagesはスコープ付きのnpmパッケージのみをサポートしています。 スコープ付きパッケージには、@owner/name というフォーマットの名前が付いています。 スコープ付きパッケージの先頭には常に @ 記号が付いています。 スコープ付きの名前を使うには、package.json の名前を更新する必要がある場合があります。 たとえば、"name": "@codertocat/hello-world-npm" のようになります。

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。

ローカルの.npmrcファイルを使ったパッケージの公開

.npmrcファイルを使って、プロジェクトのスコープのマッピングを設定できます。 .npmrcファイル中でGitHub Packages URLとアカウントオーナーを使い、GitHub Packagesがどこへパッケージリクエストをまわせばいいか把握できるようにしてください。 .npmrcを使う事で、他の開発者がGitHub Packagesの代わりにうっかりパッケージをnpmjs.orgに公開してしまうのを避けることができます。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

  1. GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。

  2. package.jsonファイルと同じディレクトリに、.npmrcを作成もしくは編集し、GitHub PackagesのURLとアカウントのオーナーを指定する行を含めてください。 OWNERを、プロジェクトを含むリポジトリを所有するユーザもしくはOrganizationアカウント名で置き換えてください。

    registry=https://npm.pkg.github.com/OWNER
  3. GitHub Packagesがプロジェクトを見つけられるリポジトリに.npmrcファイルを追加してください。 詳しい情報については「コマンドラインを使ったリポジトリへのファイルの追加」を参照してください。

  4. プロジェクトのpackage.json中のパッケージ名を確認してください。 nameフィールドは、スコープとパッケージの名前を含まなければなりません。 たとえば、パッケージの名前が "test" で、それを "My-org" という GitHub Organizationに公開する場合、package.jsonnameフィールドは @my-org/testとする必要があります。

  5. プロジェクトのpackage.json中のrepositoryフィールドを検証してください。 repositoryフィールドは、GitHubリポジトリのURLと一致していなければなりません。 たとえば、あなたのリポジトリのURLがgithub.com/my-org/testなら、repositoryフィールドはgit://github.com/my-org/test.gitでなければなりません。

  6. パッケージを公開してください。

    $ npm publish

package.jsonファイル中のpublishConfigを利用したパッケージの公開

package.jsonファイル中のpublishConfig要素を使い、パッケージを公開したいレジストリを指定できます。 詳しい情報についてはnpmドキュメンテーションの「Configの公開」を参照してください。

  1. パッケージのpackage.jsonファイルを編集して、publishConfigエントリを含めてください。

    "publishConfig": {
      "registry":"https://npm.pkg.github.com"
    },
  2. プロジェクトのpackage.json中のrepositoryフィールドを検証してください。 repositoryフィールドは、GitHubリポジトリのURLと一致していなければなりません。 たとえば、あなたのリポジトリのURLがgithub.com/my-org/testなら、repositoryフィールドはgit://github.com/my-org/test.gitでなければなりません。

  3. パッケージを公開してください。

    $ npm publish

同じリポジトリへの複数パッケージの公開

複数のパッケージを同じリポジトリに公開するには、GitHubリポジトリのURLを各パッケージのpackage.jsonファイル中のrepositoryフィールドに含めることができます。

リポジトリのURLが正しいことを確認するには、REPOSITORYを公開したいパッケージを含むリポジトリ名で、OWNERをリポジトリを所有しているGitHubのユーザもしくはOrganizationアカウント名で置き換えてください。

GitHub Packages は、パッケージ名の代わりに、このURLを元にしてリポジトリを照合します。 package.jsonファイルをリポジトリのルートディレクトリ外に保存しているなら、directoryフィールドを使ってGitHub Packagesがpackage.jsonファイルを見つけられる場所を指定できます。

"repository" : {
    "type" : "git",
    "url": "ssh://git@github.com/OWNER/REPOSITORY.git",
    "directory": "packages/name"
  },

パッケージをインストールする

プロジェクトのpackage.jsonファイルに依存関係としてパッケージを追加することで、GitHub Packagesからパッケージをインストールできます。 プロジェクトにおける package.json の利用に関する詳しい情報については、npm ドキュメンテーションの「package.json を使って作業する」を参照してください。

デフォルトでは、パッケージは1つのOrganizationから追加できます。 For more information, see "Installing packages from other organizations."

また、.npmrcファイルをプロジェクトに追加して、パッケージのインストールのすべてのリクエストがGitHub Packagesを経由するようにしなければなりません。 すべてのパッケージリクエストをGitHub Packagesを経由させると、npmjs.comからスコープ付き及びスコープ付きではないパッケージの両方を利用できます。 詳しい情報については npm ドキュメンテーションの「npm-scope」を参照してください。

  1. GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。

  2. package.jsonファイルと同じディレクトリに、.npmrcを作成もしくは編集し、GitHub PackagesのURLとアカウントのオーナーを指定する行を含めてください。 OWNERを、プロジェクトを含むリポジトリを所有するユーザもしくはOrganizationアカウント名で置き換えてください。

    registry=https://npm.pkg.github.com/OWNER
  3. GitHub Packagesがプロジェクトを見つけられるリポジトリに.npmrcファイルを追加してください。 詳しい情報については「コマンドラインを使ったリポジトリへのファイルの追加」を参照してください。

  4. インストールしているパッケージを使うには、プロジェクトのpackage.jsonを設定してください。 GitHub Packagesのためにパッケージの依存関係をpackage.jsonファイルに追加するには、@my-org/serverというように完全なスコープ付きのパッケージ名を指定してください。 npmjs.comからのパッケージについては、@babel/coreあるいは@lodashというような完全な名前を指定してください。 たとえば、以下のpackage.json@octo-org/octo-appパッケージを依存関係として使っています。

    {
      "name": "@my-org/server",
      "version": "1.0.0",
      "description": "Server app that uses the @octo-org/octo-app package",
      "main": "index.js",
      "author": "",
      "license": "MIT",
      "dependencies": {
        "@octo-org/octo-app": "1.0.0"
      }
    }
    
  5. パッケージをインストールします。

    $ npm install

他のOrganizationからのパッケージのインストール

デフォルトでは、1つのOrganizationからのみGitHub Packagesパッケージを利用できます。 If you'd like to route package requests to multiple organizations and users, you can add additional lines to your .npmrc file, replacing OWNER with the name of the user or organization account that owns the repository containing your project. 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

registry=https://npm.pkg.github.com/OWNER
@OWNER:registry=npm.pkg.github.com
@OWNER:registry=npm.pkg.github.com

参考リンク

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.