{"meta":{"title":"npmレジストリの利用","intro":"GitHub Packagesするパッケージを発行し、npm プロジェクトの依存関係としてGitHub Packagesに格納されているパッケージを使用するように npm を構成できます。","product":"GitHub Packages","breadcrumbs":[{"href":"/ja/packages","title":"GitHub Packages"},{"href":"/ja/packages/working-with-a-github-packages-registry","title":"GitHub Packagesレジストリの利用"},{"href":"/ja/packages/working-with-a-github-packages-registry/working-with-the-npm-registry","title":"npm レジストリ"}],"documentType":"article"},"body":"# npmレジストリの利用\n\nGitHub Packagesするパッケージを発行し、npm プロジェクトの依存関係としてGitHub Packagesに格納されているパッケージを使用するように npm を構成できます。\n\n<!-- 2148AF7B-5FF8-4B28-A808-D692FEE2225A -->\n\n## GitHub Packages に認証を行う\n\n> \\[!NOTE]\n> GitHub Packages では、 personal access token (classic)を使用した認証のみがサポートされます。 詳しくは、「[個人用アクセス トークンを管理する](/ja/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)」をご覧ください。\n\n非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。\n\npersonal access token (classic)、あるいは GitHub Packages API で認証を受けるのに、GitHub を利用できます。 personal access token (classic) を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token (classic) のパッケージ関連のスコープについては、「[GitHub Packagesの権限について](/ja/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries)」を参照してください。\n\nGitHub Packagesワークフロー内でGitHub Actionsレジストリに認証を受けるには、以下の方法が使えます。\n\n* `GITHUB_TOKEN` では、ワークフロー リポジトリに関連付けられているパッケージを発行します。\n* 他のプライベート リポジトリに関連付けられたパッケージをインストールするために、少なくとも `read:packages` スコープが設定された personal access token (classic) (リポジトリにパッケージへの読み取りアクセス権が付与されている場合は、`GITHUB_TOKEN` を使用できます)。 「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)」を参照してください)。\n\n### GitHub Actions ワークフローでの認証\n\nこのレジストリでは、詳細なアクセス許可がサポートされています。 詳細なアクセス許可をサポートするレジストリの場合、 GitHub Actions ワークフローがレジストリに対する認証に personal access token を使用している場合は、 `GITHUB_TOKEN`を使用するようにワークフローを更新することを強くお勧めします。\npersonal access tokenを使用してレジストリに対して認証を行うワークフローの更新に関するガイダンスについては、[GitHub Actionsでのパッケージの公開とインストール](/ja/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token) を参照してください。\n\n> \\[!NOTE]\n> REST API を使ってパッケージを削除および復元する GitHub Actions ワークフローの機能は、現在 パブリック プレビュー 段階であり、変更される可能性があります。\n\nトークンにパッケージへのアクセス許可が`GITHUB_TOKEN`されている場合は、GitHub Actions ワークフローの`admin`を使用して、REST API を使用してパッケージを削除または復元できます。 ワークフローを使ってパッケージを発行するリポジトリと、パッケージに明示的に接続したリポジトリには、リポジトリ内のパッケージに対する `admin` アクセス許可が自動的に付与されます。\n\n`GITHUB_TOKEN` の詳細については、「[ワークフローでの認証に GITHUB\\_TOKEN を使用する](/ja/actions/tutorials/authenticate-with-github_token#using-the-github_token-in-a-workflow)」を参照してください。 アクションでレジストリを使うときのベスト プラクティスについて詳しくは、「[危険にさらされたランナー](/ja/actions/concepts/security/compromised-runners#cross-repository-access)」をご覧ください。\n\nまた、パッケージに対するアクセス許可を個別に付与することも選択できますGitHub Codespaces とGitHub Actions。 詳細については、「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-github-codespaces-access-to-your-package)」および「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package)」を参照してください。\n\n### personal access tokenを使用した認証の実行\n\npersonal access token (classic) でパッケージを発行およびインストールするには、適切なスコープで GitHub Packages を使う必要があります。 詳しくは、「[GitHub Packages の概要](/ja/packages/learn-github-packages/introduction-to-github-packages#authenticating-to-github-packages)」をご覧ください。\n\nnpm を使用して GitHub Packages を認証するには、ユーザーごとの `~/.npmrc` ファイルを編集して personal access token (classic) を含めるか、ユーザー名と personal access tokenを使用してコマンド ラインで npm にログインします。\n\npersonal access token (classic)を`~/.npmrc` ファイルに追加して認証するには、プロジェクトの`~/.npmrc` ファイルを編集して次の行を含めます。TOKEN はpersonal access tokenに置き換えます。\n`~/.npmrc` ファイルが存在しない場合は、新規に作成します。\n\n```shell\n//npm.pkg.github.com/:_authToken=TOKEN\n```\n\nnpm にログインして認証するには、 `npm login` コマンドを使用し、USERNAME を GitHub ユーザー名に置き換え、TOKEN を personal access token (classic)に置き換え、PUBLIC-EMAIL-ADDRESS を電子メール アドレスに置き換えます。\n\nnpm CLI バージョン 9 以上を使用していて、コマンド ラインを使用してプライベート レジストリにログインまたはログアウトしている場合は、ブラウザー経由で既定のログイン フローを使用する代わりに、プロンプトから認証の詳細を読み取る `--auth-type=legacy` オプションを使用する必要があります。 詳細については、[`npm-login`](https://docs.npmjs.com/cli/v10/commands/npm-login)を参照してください。\n\nGitHub Packagesが npm を使用するための既定のパッケージ レジストリではなく、`npm audit` コマンドを使用する場合は、`--scope`に対して認証するときに、パッケージをホストする名前空間 (パッケージのスコープが指定された個人アカウントまたは組織) でGitHub Packages フラグを使用することをお勧めします。\n\n```shell\n$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com\n\n> Username: USERNAME\n> Password: TOKEN\n```\n\n## パッケージの公開\n\n> \\[!NOTE]\n\n> * パッケージ名とスコープには、小文字のみを使うことができます。\n> * npm バージョンの tarball のサイズは 256 MB 未満にする必要があります。\n\nGitHub Packages レジストリは、組織内または個人アカウント内に npm パッケージを格納し、パッケージをリポジトリに関連付けることができます。 権限をリポジトリから継承するか、リポジトリとは別に細かい権限を設定するかを選ぶことができます。\n\nパッケージを最初に公開する際のデフォルトの可視性はプライベートです。 可視性の変更やアクセス許可の設定については、「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)」を参照してください。 発行済みパッケージとリポジトリのリンクの詳細については、 [リポジトリのパッケージへの接続](/ja/packages/learn-github-packages/connecting-a-repository-to-a-package) を参照してください。\n\n`repository` フィールド の `package.json` ファイル に含めることで、パッケージが発行されるとすぐにパッケージを リポジトリに 接続できます。 このメソッドは、複数のパッケージを同じリポジトリに接続するためにも使えます。 詳細については、「[同じリポジトリへの複数パッケージの公開](#publishing-multiple-packages-to-the-same-repository)」を参照してください。\n\n> \\[!NOTE]\n> リポジトリにリンクされているパッケージを公開した場合、organization でアクセス許可の自動継承が無効にされていない限り、パッケージはリンクされたリポジトリのアクセス許可を自動的に継承し、リンクされたリポジトリ内の GitHub Actions ワークフローは自動的にパッケージにアクセスできるようになります。 詳しくは、「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#about-inheritance-of-access-permissions)」をご覧ください。\n\nプロジェクトのスコープマッピングは、プロジェクト内のローカル `.npmrc` ファイルか、`publishConfig` 内の `package.json` オプションを使って設定できます。\nGitHub Packages では、スコープ付き npm パッケージのみがサポートされます。 スコープ付きのパッケージには、`@NAMESPACE/PACKAGE-NAME` 形式の名前が付いています。 スコープ付きのパッケージの先頭には常に `@` 記号が付いています。 スコープ付きの名前を使うには、`package.json` で名前を更新する必要がある場合があります。 たとえば、ユーザー `octocat` のパッケージ名が `test`、スコープ付きのパッケージ名は `\"name\": \"@octocat/test\"` のように割り当てることになります。\n\nパッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「[パッケージの表示](/ja/packages/learn-github-packages/viewing-packages)」をご覧ください。\n\n### ローカルの `.npmrc` ファイルを使ってパッケージを公開する\n\n`.npmrc` ファイルを使って、プロジェクトのスコープ マッピングを構成できます。\n`.npmrc` ファイルで、GitHub Packages の URL とアカウント所有者を指定して、GitHub Packages がパッケージ リクエストの送信先を認識できるようにします。\n`.npmrc` ファイルを使用すると、他の開発者が誤って GitHub Packages ではなく npmjs.org にパッケージを公開してしまうのを防ぐことができます。\n\n1. GitHub Packagesに認証を受けてください。 詳しくは、「[GitHub Packages への認証](#authenticating-to-github-packages)」をご覧ください。\n\n2. `package.json` ファイルと同じディレクトリで、`.npmrc` ファイルを作成または編集して、GitHub Packages URL を指定する行と、パッケージがホストされている名前空間を含めます。 `NAMESPACE` を、プロジェクトを含むリポジトリを所有しており、パッケージのスコープ指定先となる。\n\n   ```shell\n   @NAMESPACE:registry=https://npm.pkg.github.com\n   ```\n\n3. GitHub Packages でプロジェクトを見つけられるリポジトリに *.npmrc* ファイルを追加します。 詳しくは、「[ファイルをリポジトリに追加する](/ja/repositories/working-with-files/managing-files/adding-a-file-to-a-repository)」をご覧ください。\n\n4. プロジェクトの `package.json` にあるパッケージの名前を確認します。\n   `name` フィールドには、スコープとパッケージの名前が含まれている必要があります。 たとえば、パッケージ名が \"test\" で、それを \"My-org\" GitHub組織に公開する場合、`name` 内の `package.json` フィールドは `@my-org/test` である必要があります。\n\n5. プロジェクトの `package.json` の `repository` フィールドを確認します。 `repository` フィールドは、GitHub リポジトリの URL と一致している必要があります。 たとえば、リポジトリの URL が `github.com/my-org/test` である場合、repository フィールドは `https://github.com/my-org/test.git` でなければなりません。\n\n6. パッケージを公開してください。\n\n   ```shell\n   npm publish\n   ```\n\n### `publishConfig` ファイル で の `package.json` を使用したパッケージの公開\n\n`publishConfig` 要素を `package.json` ファイルで 使用して、パッケージを公開するレジストリを指定できます。 詳細については、npm ドキュメントの「[publishConfig](https://docs.npmjs.com/files/package.json#publishconfig)」を参照してください。\n\n1. パッケージの `package.json` ファイルを編集して、`publishConfig` のエントリを含めるようにします。\n\n   ```shell\n   \"publishConfig\": {\n     \"registry\": \"https://npm.pkg.github.com\"\n   },\n   ```\n\n2. プロジェクトの `package.json` の `repository` フィールドを確認します。 `repository` フィールドは、GitHub リポジトリの URL と一致している必要があります。 たとえば、リポジトリの URL が `github.com/my-org/test` である場合、repository フィールドは `https://github.com/my-org/test.git` でなければなりません。\n\n3. パッケージを公開してください。\n\n   ```shell\n   npm publish\n   ```\n\n## 同じリポジトリへの複数パッケージの公開\n\n複数のパッケージ発行し、それらを同じリポジトリリンクするには、各パッケージのGitHub ファイルの `repository` フィールドに`package.json` リポジトリの URL を含めることができます。 詳細については、npm ドキュメントの「[Creating a package.json file](https://docs.npmjs.com/creating-a-package-json-file)」(package.json ファイルの作成) と「[Creating Node.js modules](https://docs.npmjs.com/creating-node-js-modules)」(Node.js モジュールの作成) を参照してください。\n\nリポジトリの URL が正しいことを確認するには、 `REPOSITORY` を発行するパッケージを含むリポジトリの名前に置き換え、 `OWNER` リポジトリを所有する GitHub 上の個人アカウントまたは組織の名前に置き換えます。\n\nGitHub Packages は、パッケージ名ではなく、URL。\n\n```shell\n\"repository\":\"https://github.com/OWNER/REPOSITORY\",\n```\n\n## パッケージのインストール\n\nパッケージを GitHub Packages からインストールするには、プロジェクトの `package.json` ファイルに依存関係としてパッケージを追加します。 プロジェクトで `package.json` を使用する方法の詳細については、npm ドキュメントの [package.json の使用](https://docs.npmjs.com/getting-started/using-a-package.json)に関するページを参照してください。\n\nデフォルトでは、パッケージは1つのOrganizationから追加できます。 詳細については、「[他の organization からのパッケージのインストール](#installing-packages-from-other-organizations)」を参照してください。\n\nまた、パッケージをインストールするすべての要求が`.npmrc`を通過するように、GitHub Packages ファイルをプロジェクトに追加する必要があります。 すべてのパッケージ要求を GitHub Packages経由でルーティングする場合は、スコープ付きパッケージとスコープなしパッケージの両方 *を npmjs.org* から使用できます。詳細については、 [npm ドキュメントの npm スコープ](https://docs.npmjs.com/misc/scope) を参照してください。\n\n1. GitHub Packagesに認証を受けてください。 詳しくは、「[GitHub Packages への認証](#authenticating-to-github-packages)」をご覧ください。\n\n2. `package.json` ファイルと同じディレクトリで、`.npmrc` ファイルを作成または編集して、GitHub Packages URL を指定する行と、パッケージがホストされている名前空間を含めます。 `NAMESPACE` を、プロジェクトを含むリポジトリを所有しており、パッケージのスコープ指定先となる。\n\n   ```shell\n   @NAMESPACE:registry=https://npm.pkg.github.com\n   ```\n\n3. GitHub Packages でプロジェクトを見つけられるリポジトリに *.npmrc* ファイルを追加します。 詳しくは、「[ファイルをリポジトリに追加する](/ja/repositories/working-with-files/managing-files/adding-a-file-to-a-repository)」をご覧ください。\n\n4. インストールするパッケージを使用するように、プロジェクトの `package.json` を構成します。\n   `package.json`のGitHub Packages ファイルにパッケージの依存関係を追加するには、`@my-org/server`などの完全なスコープのパッケージ名を指定します。\n   *npmjs.com* のパッケージの場合は、`@babel/core` または `lodash` のように完全な名前を指定してください。\n   `ORGANIZATION_NAME/PACKAGE_NAME` をパッケージの依存関係と置き換えます。\n\n   ```json\n   {\n     \"name\": \"@my-org/server\",\n     \"version\": \"1.0.0\",\n     \"description\": \"Server app that uses the ORGANIZATION_NAME/PACKAGE_NAME package\",\n     \"main\": \"index.js\",\n     \"author\": \"\",\n     \"license\": \"MIT\",\n     \"dependencies\": {\n       \"ORGANIZATION_NAME/PACKAGE_NAME\": \"1.0.0\"\n     }\n   }\n   ```\n\n5. パッケージをインストールします。\n\n   ```shell\n   npm install\n   ```\n\n### 他のOrganizationからのパッケージのインストール\n\n既定では、1 つの組織の GitHub Packages パッケージのみを使用できます。 パッケージ要求を複数の組織とユーザーにルーティングする場合は、 `.npmrc` ファイルに行を追加し、 `NAMESPACE` を、パッケージのスコープが設定されている個人アカウントまたは組織 の名前に置き換。\n\n```shell\n@NAMESPACE:registry=https://npm.pkg.github.com\n@NAMESPACE:registry=https://npm.pkg.github.com\n```"}