npm / yarn / pnpm コマンド違い早見表
はじめに
最近、pnpm をメインで使うようになってから、npm とのコマンド差分を調べることが増えました。
同じパッケージマネージャでも、npm、yarn、pnpm ではコマンドの書き方や挙動が微妙に異なります。
この記事では、よく使うコマンドの早見表をまとめます。
npm / yarn / pnpm の違い (2025/3 時点)
| マネージャ | 特徴 |
|---|---|
| npm | Node.js 標準のパッケージマネージャ。v9 以降は package-lock.json の仕様が最適化され、速度も改善されている。 |
| yarn | npm より高速なインストールと、より厳密な依存関係の管理が特徴。新しい Yarn では plug'n'play (PnP) モードも利用可能。 |
| pnpm | モジュールをグローバルに保存し、ハードリンクで共有することでディスク容量を節約。特にモノレポ環境でのパフォーマンスが優れている。 |
目的別 npm / yarn / pnpm コマンド早見表
| 操作 | npm | yarn | pnpm |
|---|---|---|---|
| パッケージをインストール | npm install package | yarn add package | pnpm add package |
| 開発用パッケージをインストール | npm install package --save-dev | yarn add package --dev | pnpm add package --save-dev |
| グローバルにインストール | npm install -g package | yarn global add package | pnpm add -g package |
| 全パッケージをインストール | npm install | yarn install | pnpm install |
コマンドを実行(例: eslint) | npx eslint . | yarn dlx eslint . | pnpm dlx eslint . |
| ローカルパッケージを実行 | npm run script | yarn script | pnpm run script |
| パッケージを削除 | npm uninstall package | yarn remove package | pnpm remove package |
| すべての依存関係を更新 | npm update | yarn upgrade | pnpm update |
| package.json のバージョンを更新 | npm version patch | yarn version --patch | pnpm version patch |
package.json を作成 | npm init | yarn init | pnpm init |
package.json を対話形式で作成 | npm init -y | yarn init -y | pnpm init |
| キャッシュをクリア | npm cache clean --force | yarn cache clean | pnpm store prune |
開発用パッケージについて
個人的には --save-dev の代わりに -D を使う派です。 特に、pnpm add -D package などは、頻発するので重宝します。 npm では -D が使えないので注意。
補足: コマンドの違いと注意点
1: キャッシュ管理
npm cache cleanやyarn cache cleanはキャッシュを削除するだけですが、pnpm store pruneは、不要になったパッケージをストレージから削除します。pnpmはnode_modulesに依存せずグローバルストアを活用するため、キャッシュ管理が異なります。
2: パッケージ実行
npxはnpm@5+に組み込まれたツールで、一時的にパッケージを実行できます。pnpm dlxはnpxのpnpm版で、同じくインストールせずにパッケージを実行できます。yarnはyarn dlxを使用し、似た動作をします。