はじめに
みなさんは npm install と pnpm install、どちらを普段使っていますか?
「なんとなく npm を使っている」という方も多いかもしれませんが、実はこの選択一つで、開発スピードと PC の空き容量が劇的に変わります。
今回は、そもそもこれらが何者なのか、そしてなぜ今 pnpm が選ばれているのかを解説します。
そもそも pnpm と npm って何?
npm / pnpm は、どちらも JavaScript / Node.js のパッケージマネージャーです。
私達は開発する際、自分で全てのコードを書くわけではありません。世界中のエンジニアが作った便利な部品(パッケージ)をダウンロードして使います。
つまり、npm / pnpm は、プロジェクトで使うライブラリをインストールしたり管理したりするためのツールです。
npm / pnpmの役割:
- 必要な部品をインターネットから探してくる(
install) - プロジェクトのフォルダ(
node_modules)に並べる - 部品同士の相性(バージョン)を管理する
npm(エヌピーエム)
Node Package Manager の略で、最も歴史が長く、Node.js に最初から付いてくる標準的なツールです。
-
特徴:
Node.jsをインストールすると最初から入っています。 -
仕組み:
プロジェクトごとに、必要な部品を全てゼロからダウンロードしてnode_modulesフォルダに詰め込みます。 -
弱点:
プロジェクトが10個あれば、同じライブラリも10回分保存されるため、PCの容量をめちゃくちゃ食います。 また、インストールが少し遅いです。
pnpm(ピーエヌピーエム)
Performant npm(効率的なnpm)の略。後から登場した、npm の代わりに使える高速パッケージマネージャーです。
-
特徴:
「速さ」と「節約」に特化しています。 -
仕組み(ここがすごい!):
PC内の「共通倉庫」に部品を1回だけ保存し、各プロジェクトにはそこへの「ショートカット」だけを置きます。 -
利点:
同じ部品なら、2回目以降のインストールは瞬きする間に終わります。
PCの容量をほとんど使いません。
npm では「本当はインストールしていないのに、なぜか使えてしまう(幽霊依存)」というバグが起きがちですが、pnpmはそれを許さないので、本番環境で「動かない!」というトラブルを防げます。
どう使い分ける?
基本的には 「プロジェクトの最初に決めたもの」 を使い続けるのが鉄則です。
pnpm-lock.yaml がある場合: 迷わず pnpm install
package-lock.json がある場合: npm install
どちらもない(新規)場合: pnpm install
⚠️注意点
もし GitHub からクローンしたリポジトリに pnpm-lock.yaml が入っていたら、その作者は pnpm を想定しています。そこで npm install をしてしまうと、依存関係がぐちゃぐちゃになることがあるので注意してください。
まとめ
pnpmはインストール速度の向上はもちろん、node_modules でディスクを圧迫しないのが最大のメリットです。もう node_modules の肥大化に悩みたくないなら、今すぐ pnpm を入れましょう。