前回は Node.js の導入までを行ったので、今回はパッケージマネージャーとして pnpm を導入し、依存管理をより安全かつ快適にするところまでまとめます。
はじめに
開発用として MacBook を購入したので、開発環境を一から見直しています。
これまでは npm を中心に使っていましたが、依存パッケージの管理を深く意識しないまま進めることも多く、プロジェクトごとの差異や再現性の低さが気になる場面がありました。
最近はソフトウェアサプライチェーン攻撃の話題も増えており、依存関係をどう管理するかは以前より重要です。
そこで今回は、Node.js のパッケージマネージャーとして pnpm を導入し、Mac 上でのモジュール管理環境を整えます。
pnpmってなに?
- インストールが速い
- ディスク消費を抑えやすい
- 依存関係を厳密に扱える
- lockfile による再現性を確保しやすい
なぜpnpmを選ぶ?
今回 pnpm を選んだ理由は次の4つです。
- サプライチェーン攻撃対策を取り入れやすい
- インストールが高速
- ディスク容量を節約できる
- 依存関係を厳密に管理できる
サプライチェーン攻撃対策を取り入れやすい
たとえば 1440 分(24時間)を設定すると、公開から24時間未満のバージョンを避けられます。
この「少し待ってから取り込む」だけでも、公開直後の事故的・悪意的なバージョンを踏むリスクを下げやすくなります。
インストールが高速
pnpm は取得済みパッケージを再利用するため、同じ依存を使う複数プロジェクトで効果が出やすいです。
ディスク容量を節約できる
同一バージョンのパッケージ実体を効率よく共有できるため、プロジェクト数が増えるほど差が出ます。
依存関係を厳密に管理できる
宣言されていない依存を暗黙利用しづらく、「自分の環境だけ動く」を防ぎやすくなります。
この記事の前提
- macOS
- Node.js インストール済み(前回記事)
- zsh を利用
環境構築
1. Corepack が使えるか確認
以下を実行します。
corepack --version
バージョンが表示されれば利用可能です。
Node.js 25 以降では Corepack が同梱されないため、必要に応じて別途導入が必要です。
2. Corepack を有効化
次に以下を実行します。
corepack enable
このコマンドで、pnpm や Yarn を Corepack 経由で起動できる状態にします。
3. pnpm を導入
次に以下を実行して pnpm を導入します。
corepack use pnpm@latest
導入後、バージョンを確認します。
pnpm --version
4. ~/.npmrc を作成して minimum-release-age を設定
~/.npmrc に minimum-release-age を設定します。cat << 'EOF' >> ~/.npmrc
minimum-release-age=1440
EOF
これで「公開から24時間未満のバージョンを避ける」設定になります。
- 単位は分です
- 1週間にしたい場合は
10080を設定します - すぐ取り込みたい場合は
0を設定します
5. 既存プロジェクトを pnpm 管理へ移行
npm 管理の既存プロジェクトを pnpm に移行する場合は、以下を実行します。
cd /path/to/your-project
pnpm import
pnpm install
pnpm dev
pnpm importは既存 lockfile からpnpm-lock.yamlへの移行に使います- 以後は
pnpm-lock.yamlをコミットして運用します
6. 初回インストール時の build script を確認
pnpm では安全機能により、依存パッケージの build script が保留されることがあります。
必要なものだけ承認します。
pnpm approve-builds
内容を確認して、必要な依存のみ許可する運用がおすすめです。
おわりに
今回は、Mac で Node.js を導入したあとに pnpm を導入し、モジュール管理環境を整える手順をまとめました。
単に速くなるだけでなく、依存管理の再現性や安全性を高めやすいのが pnpm の良いところです。
次は、プロジェクト単位での pnpm 運用ルール(lockfile運用、CI設定、更新ポリシー)までまとめると、さらに安定した開発環境になります。