Skip to main content

npmレジストリの利用

GitHub Packagesするパッケージを発行し、npm プロジェクトの依存関係としてGitHub Packagesに格納されているパッケージを使用するように npm を構成できます。

メモ

サイト管理者はサポートされている各パッケージの種類を有効または無効にできるので、このパッケージの種類はインスタンスで利用できない可能性があります。 詳しくは、「Enterprise 向けのパッケージエコシステムサポートを設定する」をご覧ください。

公開したnpmバージョンに対する制限

GitHub Packagesに 1,000 以上の npm パッケージ バージョンを発行すると、使用中にパフォーマンスの問題とタイムアウトが発生する可能性があります。

将来的には、サービスのパフォーマンスを向上させるために、 GitHubで 1,000 を超えるバージョンのパッケージを発行することはできません。 この制限に達しないバージョンであれば、今後も読み取り可能です。

この制限に達した場合は、パッケージのバージョンを削除するよう検討するか、サポートにお問い合わせください。 この制限が施行されるようになると、ドキュメントが更新され、これを回避する方法が記載される予定です。 詳細については、「パッケージを削除および復元する」または「GitHub Packages の概要」を参照してください。

GitHub Packages に認証を行う

メモ

GitHub Packages では、personal access token (classic)を使用した認証のみがサポートされています。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

非公開パッケージ、内部パッケージ、公開パッケージを発行、インストール、削除するには、アクセス トークンが必要です。

personal access token (classic)、あるいは GitHub Packages API で認証を受けるのに、GitHub を利用できます。 personal access token (classic) を作成するときは、必要に応じてさまざまなスコープをトークンに割り当てることができます。 personal access token (classic) のパッケージ関連のスコープについては、「GitHub Packagesの権限について」を参照してください。

GitHub Packagesワークフロー内でGitHub Actionsレジストリに認証を受けるには、以下の方法が使えます。

  • GITHUB_TOKEN では、ワークフロー リポジトリに関連付けられているパッケージを発行します。
  • 他のプライベート リポジトリに関連付けられたパッケージをインストールするために、少なくとも read:packages スコープが設定された personal access token (classic) (リポジトリにパッケージへの読み取りアクセス権が付与されている場合は、GITHUB_TOKEN を使用できます)。 「パッケージのアクセス制御と可視性の設定」を参照してください)。

personal access tokenを使用した認証の実行

personal access token (classic) でパッケージを発行およびインストールするには、適切なスコープで GitHub Packages を使う必要があります。 詳しくは、「GitHub Packages の概要」をご覧ください。

npm を使用して GitHub Packages を認証するには、ユーザーごとの ~/.npmrc ファイルを編集して personal access token (classic) を含めるか、ユーザー名と personal access tokenを使用してコマンド ラインで npm にログインします。

personal access token (classic)を~/.npmrc ファイルに追加して認証するには、プロジェクトの~/.npmrc ファイルを編集して次の行を含めます。HOSTNAME は お使いの GitHub Enterprise Server インスタンス のホスト名に置き換え、TOKEN はpersonal access tokenに置き換えます。 ~/.npmrc ファイルが存在しない場合は、新規に作成します。

インスタンスでサブドメイン分離が有効になっている場合:

//npm.HOSTNAME//:_authToken=TOKEN

インスタンスのサブドメイン分離が無効になっている場合:

//HOSTNAME/_registry/npm/:_authToken=TOKEN

npm にログインして認証するには、 npm login コマンドを使用し、USERNAME を GitHub ユーザー名に置き換え、TOKEN を personal access token (classic)に置き換え、PUBLIC-EMAIL-ADDRESS を電子メール アドレスに置き換えます。

npm CLI バージョン 9 以上を使用していて、コマンド ラインを使用してプライベート レジストリにログインまたはログアウトしている場合は、ブラウザー経由で既定のログイン フローを使用する代わりに、プロンプトから認証の詳細を読み取る --auth-type=legacy オプションを使用する必要があります。 詳細については、npm-loginを参照してください。

GitHub Packagesが npm を使用するための既定のパッケージ レジストリではなく、npm audit コマンドを使用する場合は、--scopeに対して認証するときに、パッケージをホストする名前空間 (パッケージのスコープが指定された個人アカウントまたは組織パッケージがホストされているリポジトリを所有する) でGitHub Packages フラグを使用することをお勧めします。

インスタンスでサブドメイン分離が有効になっている場合:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.HOSTNAME/

> Username: USERNAME
> Password: TOKEN

インスタンスのサブドメイン分離が無効になっている場合:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://HOSTNAME/_registry/npm/
> Username: USERNAME
> Password: TOKEN

パッケージの公開

メモ

パッケージ名とスコープには、小文字のみを使うことができます。

既定では、パッケージは、GitHub ファイルの name フィールドで指定したpackage.json リポジトリに発行されます。 たとえば、@my-org/test``my-org/test リポジトリに GitHub という名前のパッケージを発行します。 GitHub ファイルに repository フィールドを含めることで、複数のパッケージを同じpackage.json リポジトリに発行できます。 詳細については、「同じリポジトリへの複数パッケージの公開」を参照してください。

プロジェクトのスコープマッピングは、プロジェクト内のローカル .npmrc ファイルか、publishConfig 内の package.json オプションを使って設定できます。 GitHub Packages では、スコープ付き npm パッケージのみがサポートされます。 スコープ付きのパッケージには、@NAMESPACE/PACKAGE-NAME 形式の名前が付いています。 スコープ付きのパッケージの先頭には常に @ 記号が付いています。 スコープ付きの名前を使うには、package.json で名前を更新する必要がある場合があります。 たとえば、ユーザー octocat のパッケージ名が test、スコープ付きのパッケージ名は "name": "@octocat/test" のように割り当てることになります。

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しくは、「パッケージの表示」をご覧ください。

ローカルの .npmrc ファイルを使ってパッケージを公開する

.npmrc ファイルを使って、プロジェクトのスコープ マッピングを構成できます。 .npmrc ファイルで、GitHub Packages の URL とアカウント所有者を指定して、GitHub Packages がパッケージ リクエストの送信先を認識できるようにします。 .npmrc ファイルを使用すると、他の開発者が誤って GitHub Packages ではなく npmjs.org にパッケージを公開してしまうのを防ぐことができます。

  1. GitHub Packagesに認証を受けてください。 詳しくは、「GitHub Packages への認証」をご覧ください。
  2. package.json ファイルと同じディレクトリで、.npmrc ファイルを作成または編集して、GitHub Packages URL を指定する行と、パッケージがホストされている名前空間を含めます。 NAMESPACE を、プロジェクトを含むリポジトリを所有しており、ユーザー アカウントまたは Organization アカウントの名前に置き換えます。

サブドメイン分離が有効な場合:

@NAMESPACE:registry=https://npm.HOSTNAME

Subdomain Isolationが無効な場合:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. GitHub Packages でプロジェクトを見つけられるリポジトリに .npmrc ファイルを追加します。 詳しくは、「ファイルをリポジトリに追加する」をご覧ください。

  2. プロジェクトの package.json にあるパッケージの名前を確認します。 name フィールドには、スコープとパッケージの名前が含まれている必要があります。 たとえば、パッケージ名が "test" で、それを "My-org" GitHub組織に公開する場合、package.json 内の name フィールドは @my-org/test である必要があります。

  3. プロジェクトの package.jsonrepository フィールドを確認します。 repository フィールドは、GitHub リポジトリの URL と一致している必要があります。 たとえば、リポジトリの URL が github.com/my-org/test である場合、repository フィールドは https://github.com/my-org/test.git でなければなりません。

  4. パッケージを公開してください。

    npm publish
    

publishConfig ファイル で の package.json を使用したパッケージの公開

publishConfig 要素を package.json ファイルで 使用して、パッケージを公開するレジストリを指定できます。 詳細については、npm ドキュメントの「publishConfig」を参照してください。

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

    インスタンスでサブドメイン分離が有効になっている場合:

    "publishConfig": {
      "registry": "https://npm. HOSTNAME/"
    },
    

    インスタンスのサブドメイン分離が無効になっている場合:

    "publishConfig": {
      "registry": "https://HOSTNAME/_registry/npm/"
    },
    
  2. プロジェクトの package.jsonrepository フィールドを確認します。 repository フィールドは、GitHub リポジトリの URL と一致している必要があります。 たとえば、リポジトリの URL が github.com/my-org/test である場合、repository フィールドは https://github.com/my-org/test.git でなければなりません。

  3. パッケージを公開してください。

    npm publish
    

同じリポジトリへの複数パッケージの公開

複数のパッケージリンクするには、各パッケージのGitHub ファイルの repository フィールドにpackage.json リポジトリの URL を含めることができます。 詳細については、npm ドキュメントの「Creating a package.json file」(package.json ファイルの作成) と「Creating Node.js modules」(Node.js モジュールの作成) を参照してください。

リポジトリの URL が正しいことを確認するには、 REPOSITORY を発行するパッケージを含むリポジトリの名前に置き換え、 OWNER リポジトリを所有する GitHub 上の個人アカウントまたは組織の名前に置き換えます。

GitHub Packages は、パッケージ名ではなく、URL に基づいてリポジトリと一致します。

"repository":"https://HOSTNAME/OWNER/REPOSITORY",

パッケージのインストール

パッケージを GitHub Packages からインストールするには、プロジェクトの package.json ファイルに依存関係としてパッケージを追加します。 プロジェクトで package.json を使用する方法の詳細については、npm ドキュメントの package.json の使用に関するページを参照してください。

デフォルトでは、パッケージは1つのOrganizationから追加できます。 詳細については、「他の organization からのパッケージのインストール」を参照してください。

また、パッケージをインストールするすべての要求が.npmrcを通過するように、GitHub Packages ファイルをプロジェクトに追加する必要があります。 すべてのパッケージ要求を GitHub Packages経由でルーティングする場合は、スコープ付きパッケージとスコープなしパッケージの両方 を npmjs.org から使用できます。詳細については、 npm ドキュメントの npm スコープ を参照してください。

  1. GitHub Packagesに認証を受けてください。 詳しくは、「GitHub Packages への認証」をご覧ください。
  2. package.json ファイルと同じディレクトリで、.npmrc ファイルを作成または編集して、GitHub Packages URL を指定する行と、パッケージがホストされている名前空間を含めます。 NAMESPACE を、プロジェクトを含むリポジトリを所有しており、ユーザー アカウントまたは Organization アカウントの名前に置き換えます。

サブドメイン分離が有効な場合:

@NAMESPACE:registry=https://npm.HOSTNAME

Subdomain Isolationが無効な場合:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. GitHub Packages でプロジェクトを見つけられるリポジトリに .npmrc ファイルを追加します。 詳しくは、「ファイルをリポジトリに追加する」をご覧ください。

  2. インストールするパッケージを使用するように、プロジェクトの package.json を構成します。 package.jsonのGitHub Packages ファイルにパッケージの依存関係を追加するには、@my-org/serverなどの完全なスコープのパッケージ名を指定します。 npmjs.com のパッケージの場合は、@babel/core または lodash のように完全な名前を指定してください。 ORGANIZATION_NAME/PACKAGE_NAME をパッケージの依存関係と置き換えます。

    {
      "name": "@my-org/server",
      "version": "1.0.0",
      "description": "Server app that uses the ORGANIZATION_NAME/PACKAGE_NAME package",
      "main": "index.js",
      "author": "",
      "license": "MIT",
      "dependencies": {
        "ORGANIZATION_NAME/PACKAGE_NAME": "1.0.0"
      }
    }
    
  3. パッケージをインストールします。

    npm install
    

他のOrganizationからのパッケージのインストール

既定では、1 つの組織の GitHub Packages パッケージのみを使用できます。 パッケージ要求を複数の組織とユーザーにルーティングする場合は、 .npmrc ファイルに行を追加し、 HOSTNAME を お使いの GitHub Enterprise Server インスタンス のホスト名に置き換え、 NAMESPACE を、パッケージのスコープが設定されている個人アカウントまたは組織 プロジェクトを含むリポジトリを所有。

インスタンスでサブドメイン分離が有効になっている場合:

@NAMESPACE:registry=https://npm.HOSTNAME
@NAMESPACE:registry=https://npm.HOSTNAME

インスタンスのサブドメイン分離が無効になっている場合:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
@NAMESPACE:registry=https://HOSTNAME/_registry/npm

公式 npm レジストリを使用する

GitHub Packages 管理者がこの機能を有効にしている場合、GitHub Enterprise Server を使用すると registry.npmjs.com の公式 npm レジストリにアクセスできます。 詳しくは、「公式 npm レジストリに接続する」をご覧ください。