ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。
GitHub Packages、あるいはGitHub APIで認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。
GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。
GITHUB_TOKEN
を使って、ワークフローリポジトリに関連づけられたパッケージを公開。- PATで他のプライベートリポジトリ(これには
GITHUB_TOKEN
がアクセスできない)に関連づけられたパッケージをインストール。
GitHub Actionsワークフローで使われるGITHUB_TOKEN
に関する詳しい情報については「ワークフローでの認証」を参照してください。
個人アクセストークンでの認証
GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。
ユーザごとの~/.npmrcファイルを編集して個人アクセストークンを含めるか、コマンドラインからユーザ名と個人アクセストークンを使ってnpmにログインすることによって、npmでGitHub Packagesの認証を受けられます。
~/.npmrcファイルに個人アクセストークンを追加して認証を受けるには、プロジェクトの~/.npmrcファイルを編集して、以下の行を含めてください。HOSTNAME は GitHub Enterprise Serverのインスタンスのホスト名で、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 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からのパッケージのインストール」を参照してください。
You also need to add the .npmrc file to your project so that all requests to install packages will go through GitHub Packages. When you route all package requests through GitHub Packages, you can use both scoped and unscoped packages from npmjs.org. For more information, see "npm-scope" in the npm documentation.
-
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を、GitHub Enterprise Serverのインスタンスのホスト名で、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
参考リンク
- 「パッケージの削除」