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

GitHub パッケージレジストリで利用するために NPM を設定する

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

GitHub パッケージレジストリ は現在、限定パブリックベータとして利用できます。ベータ期間中は、高価なワークフローやコンテンツに GitHub パッケージレジストリ を利用することは避けてください。詳細は「GitHub パッケージレジストリ について」を参照してください。

本記事の内容:

GitHub パッケージレジストリ への認証を行う

npm で GitHub パッケージレジストリ のパブリックパッケージを公開および削除するには、read:packageswrite:packages のスコープ付き個人アクセストークンを使う必要があります。 リポジトリがプライベートである場合、個人アクセストークンも repo のスコープを持っている必要があります。 詳細は「コマンドライン用の個人アクセストークンを作成する」を参照してください。

~/.npmrc ファイルを編集するか、このファイルがない場合は作成することで、新しいパッケージをプッシュする際にあなたのトークンを利用するよう npm を設定できます。 ファイルは以下のようになっているはずです。

//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN

また、ユーザ名と個人用アクセストークンを使って npm にログインすることもできます。

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

You can also use a GITHUB_TOKEN to publish and consume packages in the GitHub パッケージレジストリ in a GitHub Actions workflow without storing and managing a personal access token. For more information about GITHUB_TOKEN, see "GITHUB_TOKEN secret."

You can use a script to inject your GITHUB_TOKEN into the appropriate configuration file for GitHub パッケージレジストリ. Add GitHub パッケージレジストリ as an alernative registry or repository in the configuration file for the package client, as well as your GitHub username and a personal access token with the appropriate scopes. The exact steps for creating a configuration file vary by package type.

パッケージを公開する

You can set up the scope mapping for your project using either a local .npmrc file in the project or using the publishConfig option in the package.json. また、複数のパッケージを同じ GitHub リポジトリに公開することもできます。

メモ: GitHub パッケージレジストリ では、スコープ付き NPM パッケージのみをサポートしています。 スコープ付きパッケージには、@owner/name というフォーマットの名前が付いています。 スコープ付きパッケージの先頭には常に @ 記号が付いています。 スコープ付きの名前を使うには、package.json の名前を更新する必要がある場合があります。 たとえば、"name": "@codertocat/hello-world-npm" のようになります。

大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

すべてのパッケージリクエストを GitHub パッケージレジストリ 経由にする場合、npmjs.com からスコープ付きとスコープ付きでないパッケージの両方を利用できます。

詳しい情報については npm ドキュメンテーションの「npm-scope」を参照してください。

ローカルの .npmrc を使ってパッケージのスコープを設定する

.npmrc を使うと、パッケージを公開する他の開発者が間違って npmjs.org に公開することを防ぐために役立ちます。

  1. プロジェクトディレクトリ内に、以下の行が含まれるよう .npmrc ファイルを作成または編集してください。 OWNER を、パッケージを公開したいリポジトリを所有する GitHub のユーザまたは Organization アカウント名に置き換えてください。 これにより、すべてのパッケージリクエストを GitHub パッケージレジストリ 経由にします。

    registry=https://npm.pkg.github.com/OWNER
  2. Check the local .npmrc into your Git repository, in the same directory as your package.json file.

  3. Verify the name of your package in your project's package.json. The name field must contain the scope and the name of the package. For example, if your package is called "test", and you are publishing to the "My-org" GitHub organization, the name field in your package.json should be @my-org/test. 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

  4. プロジェクトの package.jsonrepository フィールドを確認してください。repository フィールドは、GitHub リポジトリの URL にマッチしていなければなりません。たとえばリポジトリの URL が github.com/my-org/test なら、repository フィールドは git://github.com/my-org/test.git となっていなければなりません。

  5. パッケージを公開します:

$ npm publish
  1. パッケージには、以下の URL からアクセスできます。OWNER をあなたの GitHub ユーザもしくは Organization 名に、REPOSITORY をリポジトリ名に置き換えてください。
https://github.com/OWNER/REPOSITORY/packages

Configuring a package scope using publishConfig in package.json

You can set the registry that a package should be published to by using the publishConfig element in the package.json file. For more information, see "publishConfig" in the npm documentation.

  1. Edit the package.json file for your package and include a publishConfig entry.

    "publishConfig": {
        "registry":"https://npm.pkg.github.com/"
      },
  2. プロジェクトの package.jsonrepository フィールドを確認してください。repository フィールドは、GitHub リポジトリの URL にマッチしていなければなりません。たとえばリポジトリの URL が github.com/my-org/test なら、repository フィールドは git://github.com/my-org/test.git となっていなければなりません。

  3. パッケージを公開します:

$ npm publish
  1. パッケージには、以下の URL からアクセスできます。OWNER をあなたの GitHub ユーザもしくは Organization 名に、REPOSITORY をリポジトリ名に置き換えてください。
https://github.com/OWNER/REPOSITORY/packages

複数のパッケージを同じ GitHub リポジトリに公開する

パッケージを公開する際、デフォルトでは GitHub パッケージレジストリ はパッケージ名により公開する GitHub リポジトリを決定します。 For example, a package named @my-org/test would be published to the my-org/test GitHub repository.

If you would like to publish multiple packages to the same repository, you can include the URL to the GitHub repository in the repository field of the package.json. GitHub は、パッケージ名の代わりに、このフィールドを元にしてリポジトリを照合します。

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

パッケージの作成に関する詳しい情報については、npm ドキュメンテーションの「Node.js モジュールの作成方法」を参照してください。

パッケージレジストリイベントを受信する

パッケージが 'published' あるいは 'updated' になったときに、webhook イベントを受信することができます。詳細は GitHub 開発者ドキュメンテーション の RegistryPackageEvent を参照してください。

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

プロジェクトの GitHub からパッケージを利用する方法は、npmjs.com からパッケージを利用する方法に似ています。 Add your package dependencies to your package.json specifying the full package name. For packages from GitHub パッケージレジストリ, specify the full scoped package name, like @my-org/server. For packages from npmjs.com, specify the full name, like @babel/core or @lodash.

大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

  1. .npmrc ファイルまたは npm loginで、GitHub パッケージレジストリ への認証を行います。 詳しい情報については「GitHub パッケージレジストリへの認証を行う」を参照してください。

  2. We recommend creating a local .npmrc in the project that points to GitHub パッケージレジストリ. This will ensure other developers on your project who run npm install can access your organization's dependencies from GitHub パッケージレジストリ as well as any packages needed from npmjs.org. Add a line to .npmrc, replacing OWNER with the name of the user or organization account on GitHub that owns the repository where you will publish the package.

    registry=https://npm.pkg.github.com/OWNER
  3. Git リポジトリにローカルの .npmrc ファイルをチェックインします。

  4. package.json を、パッケージを利用するように設定します。 たとえば、以下の 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"
      }
    }

    Note: The summary for the package listing page comes directly from the description field in package.json.

  5. パッケージをインストールします。

    $ npm install

プロジェクトにおける package.json の利用に関する詳しい情報については、npm ドキュメンテーションの「package.json を使って作業する」を参照してください。

Installing packages from other organizations

By default, you can only use GitHub パッケージレジストリ packages from one organization. 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.

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

パッケージを削除する

To avoid breaking projects that may depend on your packages, GitHub パッケージレジストリ does not support deleting published versions of a package or an entire published package for public repositories. 法的な理由やGDPR標準への準拠といった特別な状況下では、GitHub Supportを通じてパッケージの削除をリクエストできます。 GitHub Supportへの連絡には連絡フォームを使い、タイトル行を「GitHub パッケージレジストリ」としてください。

You can delete private packages via GitHub's API. For more information, see "Access to package version deletion" in GitHub 開発者ドキュメンテーション.

担当者にお尋ねください

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

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