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

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 にログインすることもできます。 スコープパラメータの OWNER を、パッケージを公開したいリポジトリを含む GitHub ユーザまたは Organization 名に置き換えてください。

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

パッケージを公開する

プロジェクト内にあるローカルの .npmrc ファイルか、package.jsonpublishConfig オプションを使って、スコープのマッピングを設定できます。

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

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

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

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

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

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

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

    2. Git リポジトリにローカルの *.npmrc* をチェックインします。
    3. プロジェクトの *package.json* にあるパッケージの名前を検証してください。 `name` フィールドには、スコープとパッケージの名前が含まれている必要があります。 たとえば、パッケージの名前が "test" で、"My-org" GitHub に公開する場合、*package.json* の `name` フィールドは `@my-org/test` とする必要があります。
    

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

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

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

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

package.jsonpublishConfig でパッケージスコープを設定する

*package.json* ファイルの `publishConfig` 要素を使って、パッケージを公開する場所を設定できます。 詳しい情報については npm ドキュメンテーションの「[publishConfig](https://docs.npmjs.com/files/package.json#publishconfig)」を参照してください。

1. パッケージに対する *package.json* ファイルを編集し、`publishConfig` のエントリを含めるようにしてください。

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

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

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

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

パッケージを公開する際、デフォルトでは GitHub パッケージレジストリ はパッケージ名により公開する GitHub リポジトリを決定します。 たとえば、`@my-org/test` という名前のパッケージは、`my-org/test` という GitHub リポジトリに公開されます。 GitHub リリースおよび関連する Git タグが、パッケージのバージョンに対して存在していない場合は、それが作成されます。

複数のパッケージを同じリポジトリに公開したい場合は、GitHub リポジトリの package.json にある `repository` フィールドに、URL を記述できます。 GitHub は、パッケージ名の代わりに、このフィールドを元にしてリポジトリを照合します。

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

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

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

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

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

プロジェクトの GitHub からパッケージを利用する方法は、npmjs.com からパッケージを利用する方法に似ています。 パッケージ名の全範囲を指定する package.json に、パッケージ依存関係を追加してください。

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

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

  2. スコープのマッピングを確立する、ローカルの .npmrc をプロジェクト内に作成することをお勧めします。 これにより、npm install を実行する他の開発者が、npmjs.org ではなく GitHub リポジトリから依存関係を取得することを保証します。 .npmrc に行を追加し、OWNER を、パッケージをインストールするリポジトリ名を含む GitHub ユーザまたは Organization の名前に置き換えてください。

    @OWNER:registry=https://npm.pkg.github.com/
    
  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"
      }
    }
    
  5. パッケージをインストールします。

    $ npm install

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

パッケージを削除する

あなたのパッケージに依存しているかもしれないプロジェクトを壊すことがないよう、GitHub パッケージレジストリはパッケージの削除や、パッケージのバージョンの削除をサポートしていません。法的な理由やGDPR標準といった特別な状況下では、GitHub Supportを通じてパッケージの削除をリクエストできます。連絡フォームを使って「GitHub パッケージレジストリ」というタイトル行でGitHub Supportに連絡してください。

担当者にお尋ねください

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

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