ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 your GitHub Enterprise Server instanceのベータに参加するには、サインアップフォームを使ってください。
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。
認証を
GitHub Actionsワークフローを使ってGitHub Packagesに対して行うには、GITHUB_TOKEN
を使わなければなりません。
個人アクセストークンでの認証
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。
ユーザごとの~/.npmrcファイルを編集して個人アクセストークンを含めるか、コマンドラインからユーザ名と個人アクセストークンを使ってnpmにログインすることによって、npmでGitHub Packagesの認証を受けられます。
~/.npmrcファイルに個人アクセストークンを追加して認証を受けるには、プロジェクトの~/.npmrcファイルを編集して、以下の行を含めてください。HOSTNAME は your GitHub Enterprise Server instanceのホスト名で、TOKENは個人アクセストークンで置き換えてください。 ~/.npmrcファイルが存在しない場合は、新しく作成してください。
パッケージの作成に関する詳しい情報についてはmaven.apache.orgのドキュメンテーションを参照してください。
//npm.HOSTNAME//:_authToken=TOKEN
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
$ npm login --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
npmにログインすることで認証を受けるには、npm login
コマンドを使ってください。USERNAMEはGitHubのユーザ名で、TOKENは個人アクセストークンで、PUBLIC-EMAIL-ADDRESSはメールアドレスで置き換えてください。
GitHub Packagesがnpmを使用するデフォルトのパッケージレジストリではなく、npm audit
コマンドを使用する場合、GitHub Packagesへの認証時には、パッケージの所有者権限と共に--scope
フラグを使用することをおすすめします。
パッケージの作成に関する詳しい情報についてはmaven.apache.orgのドキュメンテーションを参照してください。
$ npm login --scope=@OWNER --registry=https://npm.HOSTNAME/
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
$ npm login --scope=@OWNER --registry=https://HOSTNAME/_registry/npm/
> 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.json の publishConfig
オプションを使って、スコープのマッピングを設定できます。 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 Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
package.json
ファイルと同じディレクトリに、.npmrc
を作成もしくは編集し、GitHub PackagesのURLとアカウントのオーナーを指定する行を含めてください。OWNER
を、プロジェクトを含むリポジトリを所有するユーザもしくはOrganizationアカウント名で置き換えてください。Subdomain Isolationが有効な場合:
@OWNER:registry=https://npm.HOSTNAME
Subdomain Isolationが無効な場合:
@OWNER:registry=https://HOSTNAME/_registry/npm
-
GitHub Packagesがプロジェクトを見つけられるリポジトリに.npmrcファイルを追加してください。 詳しい情報については「コマンドラインを使ったリポジトリへのファイルの追加」を参照してください。
-
プロジェクトのpackage.json中のパッケージ名を確認してください。
name
フィールドは、スコープとパッケージの名前を含まなければなりません。 たとえば、パッケージの名前が "test" で、それを "My-org" という GitHub Organizationに公開する場合、package.jsonのname
フィールドは@my-org/test
とする必要があります。 -
プロジェクトのpackage.json中の
repository
フィールドを検証してください。repository
フィールドは、GitHubリポジトリのURLと一致していなければなりません。 たとえば、あなたのリポジトリのURLがgithub.com/my-org/test
なら、repositoryフィールドはgit://github.com/my-org/test.git
でなければなりません。 -
パッケージを公開してください。
$ npm publish
package.jsonファイル中のpublishConfig
を利用したパッケージの公開
package.jsonファイル中のpublishConfig
要素を使い、パッケージを公開したいレジストリを指定できます。 詳しい情報についてはnpmドキュメンテーションの「Configの公開」を参照してください。
-
パッケージのpackage.jsonファイルを編集して、
publishConfig
エントリを含めてください。パッケージの作成に関する詳しい情報についてはmaven.apache.orgのドキュメンテーションを参照してください。
"publishConfig": { "registry":"https://npm.HOSTNAME/" },
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
"publishConfig": { "registry":"https://HOSTNAME/_registry/npm/" },
-
プロジェクトのpackage.json中の
repository
フィールドを検証してください。repository
フィールドは、GitHubリポジトリのURLと一致していなければなりません。 たとえば、あなたのリポジトリのURLがgithub.com/my-org/test
なら、repositoryフィールドはgit://github.com/my-org/test.git
でなければなりません。 -
パッケージを公開してください。
$ npm publish
同じリポジトリへの複数パッケージの公開
複数のパッケージを同じリポジトリに公開するには、GitHubリポジトリのURLを各パッケージのpackage.jsonファイル中のrepository
フィールドに含めることができます。
リポジトリのURLが正しいことを確認するには、REPOSITORYを公開したいパッケージを含むリポジトリ名で、OWNERをリポジトリを所有しているGitHubのユーザもしくはOrganizationアカウント名で置き換えてください。
GitHub Packages は、パッケージ名の代わりに、このURLを元にしてリポジトリを照合します。
"repository":"https://HOSTNAME/OWNER/REPOSITORY",
パッケージをインストールする
プロジェクトのpackage.jsonファイルに依存関係としてパッケージを追加することで、GitHub Packagesからパッケージをインストールできます。 プロジェクトにおける package.json の利用に関する詳しい情報については、npm ドキュメンテーションの「package.json を使って作業する」を参照してください。
デフォルトでは、パッケージは1つのOrganizationから追加できます。 詳しい情報については「他のOrganizationからのパッケージのインストール」を参照してください。
また、.npmrcファイルをプロジェクトに追加して、パッケージのインストールのすべてのリクエストがGitHub Packagesを経由するようにしなければなりません。 すべてのパッケージリクエストをGitHub Packagesを経由させると、npmjs.comからスコープ付き及びスコープ付きではないパッケージの両方を利用できます。 詳しい情報については npm ドキュメンテーションの「npm-scope」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
package.json
ファイルと同じディレクトリに、.npmrc
を作成もしくは編集し、GitHub PackagesのURLとアカウントのオーナーを指定する行を含めてください。OWNER
を、プロジェクトを含むリポジトリを所有するユーザもしくはOrganizationアカウント名で置き換えてください。Subdomain Isolationが有効な場合:
@OWNER:registry=https://npm.HOSTNAME
Subdomain Isolationが無効な場合:
@OWNER:registry=https://HOSTNAME/_registry/npm
-
GitHub Packagesがプロジェクトを見つけられるリポジトリに.npmrcファイルを追加してください。 詳しい情報については「コマンドラインを使ったリポジトリへのファイルの追加」を参照してください。
-
インストールしているパッケージを使うには、プロジェクトの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" } }
-
パッケージをインストールします。
$ npm install
他のOrganizationからのパッケージのインストール
デフォルトでは、1つのOrganizationからのみGitHub Packagesパッケージを利用できます。 パッケージリクエストを複数のOrganizationおよびユーザにルーティングしたい場合、.npmrcファイルに行を追加できます。 HOSTNAMEを、your GitHub Enterprise Server instanceのホスト名で、OWNERを、プロジェクトを含むリポジトリを所有しているユーザもしくはOrganizationアカウント名で置き換えてください。
パッケージの作成に関する詳しい情報についてはmaven.apache.orgのドキュメンテーションを参照してください。
@OWNER:registry=https://npm.HOSTNAME
@OWNER:registry=https://npm.HOSTNAME
たとえば、以下のOctodogAppとOctocatAppは同じリポジトリに公開されます。
@OWNER:registry=https://HOSTNAME/_registry/npm
@OWNER:registry=https://HOSTNAME/_registry/npm