npmとyarnとpnpmと
Node.jsのパッケージ管理ツールは現在「npm」「yarn」「pnpm」が主に使われています。どれを使うのが良いかは現在も論争が続いています。
JavaScript公式npm
3大ツールの中でも、npmは現在ダウンロード数トップのパッケージ管理ツールです。これはnpmがNode.jsに標準で備わっているツールだからというのが大きいです。他のツールと違い別途インストールする必要がありません。パッケージインストール速度は他のツールより遅めですが、度重なるアップデートにより気になるほど遅いと感じるほどではなくなりました。そもそも開発中にパッケージ管理ツールを多用しないという観点から他のツールからnpmに戻った開発者も多いです。
npmの弱点を是正したyarn
yarnは現在2番目にインストールされているパッケージ管理ツールです。標準ではないにもかかわらずnpmの半分以上のインストール数を誇ります。特徴としてインストールが高速であることと、セキュリティが高いことが挙げられます。インストールが高速なのはインストールを並列で行うようになっている為です。ただnpmもバージョンアップにより並列インストールを行うようになった為、現在はそこまで差は無い状態です。インストール時にチェックサムを使用してパッケージが不正に書き換わることを防ぐようになっているので、より安全にパッケージのインストールができるようになっています。パッケージ管理システムも優れておりyarn.lookというファイルにインストールしたパッケージから依存しているパッケージのバージョンまで明確に書き込まれており、これにより依存パッケージのバージョン違いによる不具合を防ぐことが出来ます。
モジュール容量削減 実は最速pnpm
他のツールに比べてダウンロード数も少なく影が薄めのpnpmですが、実はこれらのツールの中で最速のインストール速度を誇ります。それに加え、pnpmはパッケージのモジュールが入ったnode_modulesフォルダのファイルの内、複数のプロジェクトで利用するモジュールを、シンボリックリンクやハードリンクにして参照することで、プロジェクト自体の容量を劇的に抑えることが出来ます。問題として対応しているパッケージが他に比べて少なかったり、情報が少なすぎることが挙げられます。npmの章でも記述した「パッケージ管理ツールを多用しない」という観点から、ここまでの機能は必要ないと考える開発者も多いです。
結局どれがいいのか
パッケージ管理ツールを開発中に多用せずそこまでの性能を求めていないのであればnpm。逆に多用するか少しでもDXを向上したいという考えならyarn。プロジェクト容量が大きくなりそうで、モジュールが対応しているならpnpmを使うのもありです。結局そのプロジェクトの開発標準と規模間によって適切なものが変わって来るので、どれを使うのが一番良いかという話題は現在も論争が続いています。私はyarnが良いかなと思っていますが、そこは参加するプロジェクトに合わせていくのが一番いいかなと思います。