はじめに
チーム開発で普段からpnpmを使っていますが、チーム内でpnpmとNode.jsのバージョンを統一して作業を進めたいと思い、できるだけ外部ツールを使わずに管理する方法を試してみました。こちらがとても便利だったので、共有いたします。
動作確認環境
- Node.js 20.14.0
- pnpm 9.4.0
- macOS Sonoma 14.5
pnpmとは
pnpmは、Node.jsエコシステムのパッケージマネージャーの一つです。npmやyarnと同様に、プロジェクトの依存関係を管理するためのツールですが、pnpmはいくつかの点で独自の特徴を持っています。
-
ディスクスペース効率: pnpmはハードリンク機能を使用して依存関係を共有するため、ディスクスペースの使用量が大幅に減少します。同じ依存関係を持つプロジェクトが複数あった場合でも、依存パッケージは一つの場所に置かれ、ハードリンクとして各プロジェクトに参照されます。
-
高速なインストール: その効率的な依存関係管理とキャッシングメカニズムにより、pnpmは非常に高速にパッケージをインストールすることができます。
-
一貫性のあるロックファイル: pnpmは、プロジェクトの依存関係を一貫して再現可能な形で管理するためのロックファイルを生成します。これにより、チーム全員が同じ環境で開発を行うことが可能となります。
corepackとは
Corepackは、Node.jsに組み込まれているパッケージマネージャーマネージャーです。Corepackを使用することで、npm、yarn、pnpmなどのパッケージマネージャーを簡単にインストール、ローカルに特定バージョンに固定することができます。Corepackの利点をいくつか挙げると:
-
バージョン管理: Corepackを使用することで、プロジェクトごとに特定のバージョンのパッケージマネージャーを指定・固定することができます。これにより、チーム全体で同じバージョンのツールを使用することが保証され、互換性の問題を避けることができます。
-
簡単なセットアップ: Corepackを使用すると、パッケージマネージャーのインストールやバージョン管理がシンプルになります。
-
Node.jsとの統合: CorepackはNode.jsにネイティブに統合されているため、追加のインストールが不要で、そのまま使用することができます。
設定方法
corepackを搭載したNode.jsのインストール
corepackはNode.js v16.9.0以上で標準バンドルされているのでv16.9.0以上のNode.jsをインストールしてください。
もし、pnpm env
コマンドを使用してNode.jsをインストールした方は別途インストールしないといけないのでbrew install corepack
等でインストールしてください。
pnpmのバージョン指定
package.json
にpackageManager
フィールドを追加して揃えたいバージョンを指定してください。
"packageManager": "pnpm@9.4.0"
corepackの有効化
corepackは最初に使う場合は、コマンドを実行して有効化する必要があります。
※権限のエラーが出て実行できない場合はsudo corepack enable pnpm
を実行してください。
corepack enable pnpm
pnpmのインストール
pnpmのバージョンを確認すると、以下のような表示が出るのでYまたはEnterを押すことでインストールすることができます。
pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.4.0.tgz
? Do you want to continue? [Y/n]
Node.jsのバージョン指定
Node.jsのバージョンはpnpmのuse-node-version
の設定を.npmrc
に書くことで指定できます。
use-node-version=20.14.0
最後に
この設定を行うことで、チーム全員が同じバージョンのpnpmとNode.jsを使用して開発を行うことができます。これにより、依存関係のインストールの際のトラブルや環境の不一致による問題を起きづらくできるはずです!
pnpmを使って開発している方はぜひ参考にしてみてください!