プライベート npm リポジトリ

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 09:43:40351ブラウズ

Private npm Repositories

以下は、プライベート npm リポジトリを設定する方法に関する詳細なガイドです。これには、開始に役立つさまざまな代替案や実用的なコード スニペットが含まれています。あなたが個人の開発者であっても、大規模なチームの一員であっても、独自の npm パッケージを非公開でホストすることで、制御性、柔軟性、セキュリティの向上を実現できます。


プライベート npm リポジトリを使用する理由

  1. セキュリティとコントロール: パッケージとコードを内部に保持します。
  2. ビルドの高速化: 外部依存関係とネットワーク遅延を削減します。
  3. アクセス管理: 特定のパッケージにアクセスまたは公開できるユーザーを制御します。
  4. バージョン管理とアーカイブ: 混乱や外部の混乱を招くことなく、内部パッケージの複数のバージョンを維持します。

プライベート npm リポジトリをホストするための一般的なアプローチ

  1. セルフホスト型ソリューション

    • Verdaccio: 人気のあるオープンソースの軽量 npm プロキシ レジストリ。
    • Sonatype Nexus: 複数のリポジトリ形式 (npm、Maven など) をホストするための包括的なプラットフォーム。
    • JFrog Artifactory: 広く使用されているバイナリ リポジトリ マネージャー。
  2. Git ホストによって管理

    • GitHub パッケージ: GitHub 組織内でプライベート npm パッケージをホストします。
    • GitLab パッケージ: GitLab の DevOps プラットフォームの一部として組み込みの npm レジストリを提供します。
    • Bitbucket (サードパーティ統合またはカスタム ソリューション経由)。
  3. npm エンタープライズ

    • 大規模なチームがあり、エンタープライズレベルの機能 (高度なアクセス制御、セキュリティ監査など) が必要な場合は、npm Enterprise が選択肢になる可能性があります。

1. Verdaccio を使用したプライベート npm レジストリのセットアップ

Verdaccio は、セットアップと使用が簡単なオープンソースの npm レジストリ プロキシです。これにより、プライベート パッケージをホストしたり、公式の npm レジストリからパブリック パッケージをキャッシュしたりすることができます。

1.1 Verdaccioのインストール

Node.js がすでにマシンにインストールされていると仮定します:

# Install Verdaccio globally
npm install --global verdaccio

1.2 ヴェルダッチョを開始する

verdaccio

デフォルトでは、Verdaccio はポート 4873 で起動します。ブラウザを開いて http://localhost:4873 にアクセスすると、Verdaccio UI が表示されます。

1.3 Verdaccio の構成

Verdaccio は、最初の実行時にデフォルトの構成ファイルを作成します。編集してカスタマイズできます (ファイル パスはシステムによって異なる場合があります)。一般的な構成 (~/.config/verdaccio/config.yaml) は次のようになります:

# Install Verdaccio globally
npm install --global verdaccio
  • storage: Verdaccio がパッケージを保存するディレクトリ。
  • uplinks: 公式 npm レジストリを指します。
  • packages: アクセス、公開、およびプロキシのルールを定義します。

1.4 ユーザーの作成とログイン

verdaccio

これにより、ユーザー名、パスワード、電子メールの入力が求められます。完了すると、プライベート レジストリにログインします。

1.5 パッケージの公開

有効な package.json を含むパッケージ ディレクトリ内:

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }

それだけです!これで、パッケージがローカルの Verdaccio レジストリに公開されました。

1.6 プライベート レジストリからのインストール

このレジストリからパッケージをインストールするには、次のいずれかを実行できます:

  • --registry フラグを使用します。
npm adduser --registry http://localhost:4873
  • または、グローバルまたは特定のプロジェクト内でこのレジストリを指すように .npmrc を設定します。
npm publish --registry http://localhost:4873

2. GitHub パッケージの使用

すでにコードを GitHub でホストしている場合は、GitHub パッケージ を使用すると、すべてを 1 つ屋根の下に保管できる便利な方法となります。

2.1 リポジトリの GitHub パッケージを有効にする

  1. GitHub 上のリポジトリに移動します。
  2. 設定 をクリックします。 パッケージ
  3. 組織/アカウントで GitHub パッケージが有効になっていることを確認してください。

2.2 GitHub パッケージに対する認証

read:packages スコープと write:packages スコープを使用してパーソナル アクセス トークン (PAT) を作成します。このトークンは、開発者設定 の GitHub 設定から生成できます。 個人アクセス トークン.

トークンを .npmrc に追加します:

  npm install <package-name> --registry http://localhost:4873

YOUR_GITHUB_USERNAME を実際のユーザー名または GitHub 組織名に置き換えます。

2.3 GitHub パッケージへのパッケージの公開

GitHub ユーザー名または組織と一致するスコープで package.json を更新します。

  registry=http://localhost:4873

次に公開します:

//npm.pkg.github.com/:_authToken=YOUR_PERSONAL_ACCESS_TOKEN
@YOUR_GITHUB_USERNAME:registry=https://npm.pkg.github.com

2.4 GitHub パッケージからのインストール

.npmrc が GitHub パッケージを指していることを確認してから、次のようにします。

{
  "name": "@YOUR_GITHUB_USERNAME/my-private-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  }
}

3. GitLab パッケージの使用

GitLab は、組み込みのパッケージ レジストリも提供します。

3.1 GitLab パッケージ レジストリのセットアップ

  1. GitLab プロジェクトに移動します。
  2. 設定に移動します -> パッケージとレジストリ -> パッケージレジストリ

3.2 .npmrcの設定

GitLab 認証情報を使用してローカル/グローバル .npmrc ファイルを作成または更新します。

npm publish

3.3 GitLab への公開

GitLab グループまたはユーザー名前空間と一致するように package.json スコープを更新します。

npm install @YOUR_GITHUB_USERNAME/my-private-package

次に公開します:

# Install Verdaccio globally
npm install --global verdaccio

3.4 GitLab パッケージからのインストール

verdaccio

4. Sonatype Nexus または JFrog Artifactory による自己ホスト

複数のリポジトリ タイプをサポートする堅牢なオンプレミス ソリューションをお探しの場合は、Sonatype Nexus または JFrog Artifactory が最適かもしれません。

4.1 Nexus リポジトリ

  1. サーバーまたは開発マシンに Nexus Repository Manager をインストールします。
  2. http://your-nexus-server:8081 で Nexus UI にログインします。
  3. リポジトリ設定から新しいnpm (ホスト型)リポジトリを作成します。
  4. 認証を設定し (必要な場合)、URL をメモします。

同様の .npmrc セットアップを使用して、npm クライアントが新しい Nexus npm リポジトリを指すようにします。

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }

通常どおりパッケージを公開します:

npm adduser --registry http://localhost:4873

4.2 JFrog Artifactory

  1. Artifactory をインストールして起動します。
  2. Artifactory UI で、npm の ローカル リポジトリ を作成します。
  3. 同様に .npmrc を設定します。
npm publish --registry http://localhost:4873

次を使用して公開します:

  npm install <package-name> --registry http://localhost:4873

5.npmエンタープライズ

完全な制御、監査、高度なセキュリティを必要とする大規模組織の場合、npm Enterprise がオプションです。それは以下を提供します:

  • シングル サインオン (SSO) の統合。
  • 強化されたセキュリティ スキャン と監査。
  • きめ細かいアクセス制御

セットアップ手順については、npm Enterprise のドキュメントを参照してください。


ベストプラクティスとヒント

  1. スコープを使用する: プライベート パッケージ (@company/your-package) をスコープすると、パブリック パッケージと区別するのに役立ちます。
  2. .npmrc 管理:
    • 混乱を避けるために、プロジェクトごと .npmrc ファイルを使用してください。
    • 資格情報をバージョン管理の対象外にします。
  3. CI/CD による自動化: 一貫性を保つために、公開手順を CI/CD パイプラインに統合します。
  4. プロキシのセットアップ: ほとんどの自己ホスト型レジストリはパブリック npm レジストリをプロキシできるため、共通の依存関係をインストールするためにレジストリを切り替える必要はありません。
  5. 監視と監査: レジストリ内のダウンロード、バージョン、アクティビティを追跡します。

結論

プライベート npm リポジトリをセットアップすると、独自のパッケージを安全に管理およびホストできるようになります。 Verdaccio のようなセルフホスト型ソリューションを使用している場合でも、GitHub パッケージや GitLab パッケージなどのマネージド ソリューションを活用している場合でも、Nexus、Artifactory、npm Enterprise などのエンタープライズ ソリューションを選択している場合でも、基本は同じです。

  1. レジストリを設定します。
  2. 認証を設定します。
  3. パッケージを公開して使用します。

セキュリティ、スケーラビリティ、メンテナンスに関する組織の要件に最も適したアプローチを選択してください。上記の例とコード スニペットを使用すると、独自のプライベート npm パッケージのホストを開始するための強固な基盤が得られるはずです。コーディングを楽しんでください!

以上がプライベート npm リポジトリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。