pnpmとnpmの比較:実際に何が違うのか

pnpmとnpmの比較

pnpmとnpm:保存方法、ロックファイル、ワークスペース、コマンド対応表 | We.Inc

pnpmとnpmがパッケージを保存し、バージョンを固定し、モノレポを扱う方法の違い、検索できるnpmからpnpmへのコマンド変換表、プロジェクトを安全に移行する正確な手順を紹介します。

npmはすべてのパッケージを各プロジェクトのnode_modulesにコピーし、フラットに巻き上げます。pnpmはディスク上に内容アドレス方式のストアを1つ持ち、そこからファイルをハードリンクし、node_modulesの最上位には直接の依存関係だけを置きます。これによりディスク容量を節約でき、コードが宣言していないパッケージをインポートするのを防げます。ほとんどのコマンドは1対1で対応します。

主な違い

どちらのツールも同じpackage.jsonを読み、同じレジストリからインストールするので、選択のポイントは、構造、2回目以降のインストール速度、モノレポ用の機能、厳密さです。以下では、それぞれのパッケージの保存方法、使い慣れたコマンドの変換表、既存のプロジェクトをnpmからpnpmへ移行する手順を紹介します。

よくある質問

pnpmはnpmより速いですか?

pnpmはストアにすでにあるファイルを再利用することが多く、同じマシンでの2回目以降のインストールに有利です。速度はキャッシュの状態、ネットワーク、プロジェクトの規模によって変わるので、公開されているベンチマークに頼らず、自分のプロジェクトで両方を計測しましょう。

package-lock.jsonがあるプロジェクトでpnpmを使えますか?

はい。pnpm importを実行すると、package-lock.json、npm-shrinkwrap.json、yarn.lockからpnpm-lock.yamlが作られます。その後、古いロックファイルと依存関係のフォルダーを削除し、pnpm installを実行します。

pnpmに切り替えた後、アプリがモジュールを見つけられないのはなぜですか?

自分のコードか依存関係のどれかが、自身のpackage.jsonに記載されていないパッケージをインポートしています。npmのフラットな構造がその間違いを隠していたのです。インポートしている側の依存関係として、足りないパッケージを追加しましょう。

pnpmにはNode.jsのインストールが必要ですか?

pnpmのインストールドキュメントでは、pnpm 12はネイティブの実行ファイルで、それ自体の実行にNode.jsは不要だと説明されています。もちろん、プロジェクトのスクリプトには引き続きNode.jsが必要です。

初心者はどちらを使うべきですか?

npmです。Node.jsに同梱されており、ほとんどのチュートリアルで使われています。モノレポを運用する、1台のマシンで多くのプロジェクトを扱う、より厳密なモジュールフォルダーの構造が欲しい、といった場合にpnpmへ移行しましょう。

それぞれのパッケージの保存方法

ワークスペースとモノレポ

プロジェクトをnpmからpnpmに切り替える

移行の手順

pnpm importはnpmのロックファイルを読み込むので、すでにテスト済みのバージョンをそのまま使えます。コミットする前にテストを実行しましょう。

ここで一致したフォルダーはすべてワークスペースのパッケージになります。このファイルはリポジトリのルートに置きます。

ローカルのパッケージに依存する

workspace:*は、レジストリのバージョンではなく、常にローカルのuiを参照します。

npmからpnpmへのコマンド変換

npmのコマンドを入力

npm install -D vite

pnpmでの対応コマンド

直接対応するものはありません。その他のnpmコマンドの多くは、pnpmでも同じ名前のままです。

npmのコマンドとpnpmでの対応コマンド

コピー

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る