JavaScriptのモジュールについてまとめてく: パッケージマネージャー編
パッケージマネージャーとは
パッケージマネジャーは、ソフトウェアのパッケージ(ライブラリやモジュールなど)のインストール、アップデート、設定、削除などを管理するツール。
JavaScriptプロジェクトでは、これらのパッケージを効率的に管理し、開発の生産性を高めるためにパッケージマネジャーが使用される。
モジュールとは
モジュールは、関連するコードがまとめられたもの。
一つのモジュールは特定の機能や構成要素を担い、再利用可能なコードの塊として機能する。
ライブラリとは
特定の機能やタスクを実行するために予め書かれたコードの集まり。
ライブラリは一つ以上のモジュールから構成されることが多く、開発者が特定の機能を簡単に実装できるように再利用可能なコードを提供する。
パッケージとは
パッケージは、再配布や再利用が可能な形でまとめられた一つ以上のライブラリ(またはモジュール)。
パッケージは通常、ライブラリやモジュールに加えて、それらをインストールしたり管理したりするためのメタデータやドキュメントを含む。
JavaScriptにおけるパッケージマネージャー
npm
npm(Node Package Manager)はNode.jsデフォルトのパッケージマネージャー。
npm install
でpackage.jsonに書かれたパッケージをinstallする
package.jsonではパッケージのバージョンを範囲指定できるため、実際にダウンロードされたパッケージはpackage-lock.jsonで管理される。
yarn
yarnはFacebookによって開発された別のJavaScriptパッケージマネジャー。
npmと同様の機能を提供しながら、パフォーマンスとセキュリティの面でいくつかの改善が加えられている。
yarn install
でpackage.jsonに書かれたパッケージをinstallする
実際にダウンロードされたパッケージはyarn.lockで管理される。
pnpm
npmの代替として開発されたJavaScriptパッケージマネジャー。
速度と効率を上げるために様々な工夫がされている。
pnpm install
でpackage.jsonに書かれたパッケージをinstallする
実際にダウンロードされたパッケージは**.pnpm-lock.yaml**で管理される。
- 効率的なストレージ
pnpmはハードリンクを使用してパッケージを格納するため、複数のプロジェクトで同じパッケージを使用している場合でもディスクスペースを節約できる。 - 高速な操作
pnpmはnpmやyarnに比べてインストール速度が速い。これは、重複するパッケージを再ダウンロードせずに共有するため。 - 厳格な依存関係
pnpmはパッケージの依存関係をより厳格に管理し、予期しない副作用を防ぐ。 - モノリポ をサポート
pnpm はリポジトリ内マルチパッケージをサポートしている
速度比較
pnpmが早いっぽいが、yarn v4だとyarnのほうが早いという話もある。
モノレポならpnpm一択。