npmパッケージが保管されているサーバー・リポジトリのこと。npm installやpnpm installを実行すると、このレジストリからパッケージをダウンロードする。
- npmjs.org: 公式のパブリックレジストリ(デフォルト)
- GitHub Packages: GitHubが提供するレジストリ
- 企業独自のレジストリ: Verdaccio、JFrog Artifactoryなど
pnpm install react
↓
レジストリに問い合わせ(デフォルト: https://registry.npmjs.org/)
↓
reactパッケージをダウンロード
↓
node_modulesにインストール
一般公開されていない、限られたユーザーのみがアクセスできるレジストリ。
- 社内専用パッケージの配布
- セキュリティ上公開できないコードの共有
- 有料パッケージの配布
- フォークしたパッケージの管理
- GitHub Packages(プライベート): 組織内でのみ共有
- 企業の内部レジストリ: 社内ネットワークからのみアクセス可能
- npm Enterprise: 企業向けプライベートnpm
プライベートレジストリへのアクセス権限を確認する仕組み。誰でもアクセスできないようにトークンで保護する。
- レジストリ提供者からトークンを発行してもらう
.npmrcにトークンを記述pnpm install実行時に自動的にトークンが送信される- レジストリが認証を確認してパッケージを提供
- Personal Access Token (PAT): GitHub、GitLabなどで発行
- Auth Token: npm公式で発行
- Basic認証: ユーザー名とパスワード(Base64エンコード)
# GitHub Packagesの場合
//npm.pkg.github.com/:_authToken=ghp_xxxxxxxxxxxx
# npm公式のプライベートパッケージ
//registry.npmjs.org/:_authToken=npm_xxxxxxxxxxxx
# カスタムレジストリ
//registry.company.com/:_authToken=abc123xyz
一般に公開されていない、特定のユーザーや組織のみが利用できるnpmパッケージ。
- プライベートレジストリに保管される
- 認証なしではインストールできない
package.jsonのnameが@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
.npmrcにトークンが設定されていない → トークンを追加- トークンの権限が不足している → 適切な権限のトークンを再発行
- トークンが期限切れ → 新しいトークンを発行
- レジストリのURLが間違っている → 正しいURLを確認
.npmrcを.gitignoreに追加(トークンをコミットしない)- 環境変数を使う:
_authToken=${NPM_TOKEN} - CIでは環境変数からトークンを注入
- トークンには最小限の権限のみ付与
- 定期的にトークンをローテーション