今回は、現在のモダンフロントエンドの開発では必須のJavaScriptのパッケージマネージャーであるnpm」「Yarn」「pnpmについて解説していきます。

全く知らない方向けに、まずはそもそもJavaScriptのパッケージマネージャーとは何なのかについてご紹介させていただきます。

パッケージマネージャーについて

パッケージマネージャーとは、ソフトウェアのインストールや更新などの操作をしたり、他のソフトウェアとの依存関係を管理するためのツールです。名前の通り、パッケージマネージャーはパッケージを管理するものであり、パッケージとはファイル群を一つにし、インストールや削除をまとめてできるようにしたものです。

パッケージマネージャを使うことで、フレームワークのインストールなどを高速に、なおかつ正確に行うことができます。現在フレームワークをパッケージマネージャーを使わずにインストールすることは、ほぼ無いというほど普及しています。

現在、JavaScriptのパッケージマネージャーには主にnpmYarnpnpmの3つがあります。これらは、Node.jsというJavaScriptでサーバーサイドの処理を可能にさせるプログラムで動作するパッケージマネージャーです。

Node.jsについて詳しく知りたい方は以下の記事からどうぞ。

【初心者向け】Node.jsとは?Windowsにインストールする方法を簡単に解説

 

では、これら3つのパッケージマネージャーについて、一つずつ解説していきます。

各パッケージの特徴

npmの特徴

npm(Node Package Manager)は、Node.jsのパッケージマネージャーです。2009年にNode.jsがリリースされ、2010年にnpmがリリースされました。

npmというコマンドラインで動作するプログラムでパッケージを管理でき、npm公式のパッケージマネージャーとなります。

Windows等のソフトウェアでインストールするとNode.jsに同梱されています。

また、package-lock.jsonファイルを自動的に生成することができ、他の開発者がローカルマシンに依存関係を簡単に管理することができます。

Yarnの特徴

Yarnとはnpmよりも後に出されたJavaScriptのパッケージマネージャーです。

npmにはセキュリティの問題やインストール時のパッケージバージョンの非再現性の問題があり、これらの問題を解決するために開発がスタートしました。Yarnにはnpm単体にはない独自機能がいくつか含まれています。

また、オフラインキャッシュの仕組みを利用していて、パッケージを初めてインストールすると、Yarnはそのパッケージをキャッシュフォルダに追加します。これにより、Yarnのパフォーマンスを大幅に向上させています。

しかし、現在ではnpm側にインストール速度の改善やWorkspacesなどの多くのYarnの機能が取り込まれ、両者の機能の差はほとんどないといわれています。

Yarnの詳細は以下の公式サイトからどうぞ。

https://chore-update–yarnpkg.netlify.app/ja/

pnpmの特徴

npmの代替として開発されているパッケージマネージャーであり、インストールの速度と効率性が優れています、

最大の特徴としては、インストールの高速化をするために一つのファイルを複数のプロジェクト間でハードリンクで管理することです。

しかしながら、npmとYarnでは対応していてもpnpmには標準対応していない場合があります。

pnpmの詳細は以下の公式サイトからどうぞ。

https://pnpm.io/ja/

各パッケージの比較

3者ともJavaScriptのパッケージマネージャーですが、それぞれには機能の違いがあります。
では、紹介していきます。

ダウンロード数

3大ツールの中でも、npmはダウンロード数トップのパッケージマネージャーです。

npmはNode.jsに標準で備わっているツールであり、他のツールと違いインストールする手間がかかりません。

安全・簡潔

Yarnではチェックサムによるライブラリの整合性をチェックします。パッケージのインストールをする前にダウンロードされてきたファイルが改ざんされていないかを確認します。また、Yarnはコマンドが非常に簡潔であることが優れているといえます。

Yarnはこれらの利便性から、現在2番目にインストールされているパッケージ管理ツールです。標準ではないにも関わらずnpmの半分以上のインストール数があります。

容量の削減・インストール速度

pnpm容量を削減する点では、非常に優れています。node_modulesフォルダのファイル、複数のプロジェクトで利用するモジュールを、シンボリックリンクやハードリンクにして参照することで、プロジェクトの容量を劇的に抑えることができます。また、インストールの速度も最速なのがpnpmです。

しかしながら、pnpmの問題点として対応しているパッケージが非常に少なかったり、情報が少なかったりすることが挙げられます。

まとめ

現在、主なパッケージマネージャーであるnpm」「Yarn」「pnpmについてご紹介しました。

・標準的な機能を使うだけでそこまでの性能を求めていなければnpm
・少しでも機能を充実させたい方はYarn
・プロジェクト容量が大きくて、なおかつモジュールが対応しているならpnpm

を使うのが一番適していると思います。ぜひ参考にしていただけたら幸いです。