フロントエンド開発でパッケージ管理に利用される npm(エヌピーエム)、yarn(ヤーン)、pnpm(ピーエヌピーエム)、bun(バン) について、それぞれ解説します。
パッケージとは?
パッケージとは、再利用可能なコードの集まりのことです。JavaScriptやNode.jsの世界では、これらのパッケージは特定の機能や問題を解決するためのコードをまとめたものです。
以下はパッケージの例です。
- React: ユーザーインターフェースを構築するためのライブラリ
- Sass/SCSS: CSSを拡張した言語で、変数、ネスト、ミックスインなどの機能を追加
- Axios: HTTPリクエストを簡単に行うためのライブラリ
パッケージマネージャー(npm、yarn、pnpm、bun)は、これらのパッケージをインストール、更新、管理するためのツールです。npm install react のようなコマンドを実行すると、パッケージマネージャーが自動的にパッケージをダウンロードし、プロジェクトで使えるようにセットアップします。
各パッケージマネージャーについて
npm(Node Package Manager)
npmはNode.jsをインストールすると、自動的にインストールされます。
最も古いパッケージマネージャーです。
yarn
Facebookが開発したnpm代替パッケージマネージャー。
npmの問題点(当時の速度や安全性の問題)を解決するために作られました。
並列インストールにより高速化され、キャッシュの活用で再インストールが速くなりましたが、現在ではnpmも高速化され劇的な違いは無くなりました。
pnpm
すべてのプロジェクトで同じパッケージを共有するシンボリックリンクを使用することで、複数のプロジェクトで同じパッケージを使う場合、ディスク容量を大幅に節約できるようになりました。
厳格な依存関係の分離による安全性の向上も図られています。
bun
最も新しいツール(2023年に1.0が登場したばかり)で、単なるパッケージマネージャーではなく、JavaScriptランタイム(JavaScriptコードを実行するための環境や実行システムのこと。他にはNodeやDenoなどがあります)・ビルダー・テストランナーも含みます。
Zigという言語で書かれており、非常に高速に動作し、インストールやランタイム実行速度でnpm、yarn、pnpmを大きく上回るベンチマークとなっています。
ただ、新しいこともあり、互換性や安全性はまだ不安定なところがあるので、今後の情報を踏まえながら使っていきましょう。