awesome-hacks
Docs

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:とても強い