👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Stay tuned for a blog post later today.


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

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

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

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 詳しい情報については「GitHubの製品」を参照してください。

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

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 GitHub Actionsのワークフローを使って認証するのには、GITHUB_TOKENが利用できます。

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

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

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

~/.npmrcファイルに個人アクセストークンを追加して認証を受けるには、プロジェクトの~/.npmrcファイルを編集して、以下の行を含めてください。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から追加できます。 詳しい情報については他のOrganizationからのパッケージのインストールを参照してください。

また、.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パッケージを利用できます。 パッケージリクエストを複数のOrganization及びユーザにまわしたい場合、.npmrcファイルに行を追加できます。OWNERを、プロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で置き換えてください。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

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

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください