デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
Limits for published npm versions
If you publish over 1,000 npm package versions to GitHub Packages, you may see performance issues and timeouts occur during usage.
In the future, to improve performance of the service, you won't be able to publish more than 1,000 versions of a package on GitHub. Any versions published before hitting this limit will still be readable.
If you reach this limit, consider deleting package versions or contact Support for help. When this limit is enforced, our documentation will be updated with a way to work around this limit. For more information, see "Deleting a package" or "Contacting Support."
GitHub Packages への認証を行う
GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。
To authenticate using a GitHub Actionsのワークフロー:
- For package registries (
PACKAGE-REGISTRY.pkg.github.com
), you can use aGITHUB_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はメールアドレスで置き換えてください。
If GitHub Packages is not your default package registry for using npm and you want to use the npm audit
command, we recommend you use the --scope
flag with the owner of the package when you authenticate to GitHub Packages.
$ npm login --scope=@OWNER --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
GITHUB_TOKEN
での認証
GitHub Actionsワークフローを使っているなら、GITHUB_TOKEN
を使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_TOKEN
での認証」を参照してください。
パッケージを公開する
Note: Package names and scopes must only use lowercase letters.
デフォルトでは、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
というフォーマットの名前が付いています。 スコープ付きパッケージの先頭には常に @
記号が付いています。 You may need to update the name in your package.json to use the scoped name. たとえば、"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アカウント名で置き換えてください。registry=https://npm.pkg.github.com/OWNER
-
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
エントリを含めてください。"publishConfig": { "registry":"https://npm.pkg.github.com" },
-
プロジェクトの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://github.com/OWNER/REPOSITORY",
パッケージをインストールする
プロジェクトのpackage.jsonファイルに依存関係としてパッケージを追加することで、GitHub Packagesからパッケージをインストールできます。 For more information on using a package.json in your project, see "Working with package.json" in the npm documentation.
デフォルトでは、パッケージは1つのOrganizationから追加できます。 For more information, see "Installing packages from other organizations."
また、.npmrcファイルをプロジェクトに追加して、パッケージのインストールのすべてのリクエストがGitHub Packagesを経由するようにしなければなりません。 すべてのパッケージリクエストをGitHub Packagesを経由させると、npmjs.comからスコープ付き及びスコープ付きではないパッケージの両方を利用できます。 詳しい情報については npm ドキュメンテーションの「npm-scope」を参照してください。
-
GitHub Packagesに認証を受けてください。 詳しい情報については「GitHub Packagesへの認証を行う」を参照してください。
-
package.json
ファイルと同じディレクトリに、.npmrc
を作成もしくは編集し、GitHub PackagesのURLとアカウントのオーナーを指定する行を含めてください。OWNER
を、プロジェクトを含むリポジトリを所有するユーザもしくはOrganizationアカウント名で置き換えてください。registry=https://npm.pkg.github.com/OWNER
-
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パッケージを利用できます。 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.
registry=https://npm.pkg.github.com/OWNER
@OWNER:registry=https://npm.pkg.github.com
@OWNER:registry=https://npm.pkg.github.com