npmとpnpmについて
npmとpnpmについて
最終更新:2026/03/31
npm、pnpmについての理解が不十分だったので、 整理してみる。
npmとは
- JavaScript/Node.js環境における標準的な公式のパッケージ管理ツール
- 世界中の開発者が公開したプログラム(ライブラリ)のインストール、バージョン管理、プロジェクトの依存関係の解決を、コマンド一つで自動化・効率化する機能を提供
- 各プロジェクトのたびにネット上のレジストリからパッケージを毎回ダウンロードして、各プロジェクトのnode_modulesを丸ごと展開(コピー)するため、それぞれが実体になる。
pnpmとは
- pnpmはnpmの代わりになるサードパーティ(非公式。有志)の“パッケージ管理ツール”
- 最初に一度だけダウンロードし、グローバルストアに保存(インストール)したものを、各プロジェクトのnode_modulesでシンボリックリンクで参照(共有)しているため、ディスク容量を圧迫しないし速度も速い
- npmよりも依存関係に対して厳密なのでバグが減る一方、動かなくなるなども起きやすくなる
グローバルストアとは
pnpmが勝手に作るキャッシュ場所
npmとpnpmの違い
モノレポとの相性
モノレポとは
モノレポ:複数のプロジェクトを1つのリポジトリで管理する構成
普通(マルチレポ)
repo-frontend
repo-backend
repo-sharedモノレポ
repo/
apps/
frontend/
backend/
packages/
shared/👉 1つのGitリポジトリに全部入れる
モノレポのメリット
- 共通コードを使い回せる
- バージョン管理が楽
- 一括ビルド・一括テストできる
👉 大規模開発でよく使う
比較
- npm:弱い
- pnpm:とても強い