Skip to content

Instantly share code, notes, and snippets.

@kobitoDevelopment
Created December 21, 2025 08:30
Show Gist options
  • Select an option

  • Save kobitoDevelopment/f60c4d70fd4ffad42c0c22ed1cb899e9 to your computer and use it in GitHub Desktop.

Select an option

Save kobitoDevelopment/f60c4d70fd4ffad42c0c22ed1cb899e9 to your computer and use it in GitHub Desktop.

npmレジストリとプライベートパッケージの基礎

レジストリとは

npmパッケージが保管されているサーバー・リポジトリのこと。npm installpnpm installを実行すると、このレジストリからパッケージをダウンロードする。

主なレジストリ

  • npmjs.org: 公式のパブリックレジストリ(デフォルト)
  • GitHub Packages: GitHubが提供するレジストリ
  • 企業独自のレジストリ: Verdaccio、JFrog Artifactoryなど

仕組み

pnpm install react
    ↓
レジストリに問い合わせ(デフォルト: https://registry.npmjs.org/)
    ↓
reactパッケージをダウンロード
    ↓
node_modulesにインストール

プライベートレジストリとは

一般公開されていない、限られたユーザーのみがアクセスできるレジストリ。

用途

  • 社内専用パッケージの配布
  • セキュリティ上公開できないコードの共有
  • 有料パッケージの配布
  • フォークしたパッケージの管理

  • GitHub Packages(プライベート): 組織内でのみ共有
  • 企業の内部レジストリ: 社内ネットワークからのみアクセス可能
  • npm Enterprise: 企業向けプライベートnpm

プライベートレジストリの認証

プライベートレジストリへのアクセス権限を確認する仕組み。誰でもアクセスできないようにトークンで保護する。

認証の流れ

  1. レジストリ提供者からトークンを発行してもらう
  2. .npmrcにトークンを記述
  3. pnpm install実行時に自動的にトークンが送信される
  4. レジストリが認証を確認してパッケージを提供

認証トークンの種類

  • Personal Access Token (PAT): GitHub、GitLabなどで発行
  • Auth Token: npm公式で発行
  • Basic認証: ユーザー名とパスワード(Base64エンコード)

.npmrcの記述例

# GitHub Packagesの場合
//npm.pkg.github.com/:_authToken=ghp_xxxxxxxxxxxx

# npm公式のプライベートパッケージ
//registry.npmjs.org/:_authToken=npm_xxxxxxxxxxxx

# カスタムレジストリ
//registry.company.com/:_authToken=abc123xyz

プライベートパッケージとは

一般に公開されていない、特定のユーザーや組織のみが利用できるnpmパッケージ。

特徴

  • プライベートレジストリに保管される
  • 認証なしではインストールできない
  • package.jsonname@organization/package-nameの形式になることが多い

使用例

{
  "dependencies": {
    "@my-company/shared-components": "^1.0.0",
    "@my-company/utils": "^2.3.1"
  }
}

パブリックパッケージとの違い

項目 パブリックパッケージ プライベートパッケージ
アクセス 誰でも 許可されたユーザーのみ
認証 不要 必要
レジストリ registry.npmjs.org プライベートレジストリ
react, express @my-company/utils

トラブルシューティング

エラー例

ERR_PNPM_FETCH_401  GET https://npm.pkg.github.com/@org/package: 
Unauthorized - 401

原因と対処

  1. .npmrcにトークンが設定されていない → トークンを追加
  2. トークンの権限が不足している → 適切な権限のトークンを再発行
  3. トークンが期限切れ → 新しいトークンを発行
  4. レジストリのURLが間違っている → 正しいURLを確認

セキュリティのベストプラクティス

  • .npmrc.gitignoreに追加(トークンをコミットしない)
  • 環境変数を使う: _authToken=${NPM_TOKEN}
  • CIでは環境変数からトークンを注入
  • トークンには最小限の権限のみ付与
  • 定期的にトークンをローテーション
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment