LoginSignup
8
4

はじめに

チーム開発で普段からpnpmを使っていますが、チーム内でpnpmとNode.jsのバージョンを統一して作業を進めたいと思い、できるだけ外部ツールを使わずに管理する方法を試してみました。こちらがとても便利だったので、共有いたします。

動作確認環境

  • Node.js 20.14.0
  • pnpm 9.4.0
  • macOS Sonoma 14.5

pnpmとは

pnpmは、Node.jsエコシステムのパッケージマネージャーの一つです。npmやyarnと同様に、プロジェクトの依存関係を管理するためのツールですが、pnpmはいくつかの点で独自の特徴を持っています。

  1. ディスクスペース効率: pnpmはハードリンク機能を使用して依存関係を共有するため、ディスクスペースの使用量が大幅に減少します。同じ依存関係を持つプロジェクトが複数あった場合でも、依存パッケージは一つの場所に置かれ、ハードリンクとして各プロジェクトに参照されます。

  2. 高速なインストール: その効率的な依存関係管理とキャッシングメカニズムにより、pnpmは非常に高速にパッケージをインストールすることができます。

  3. 一貫性のあるロックファイル: pnpmは、プロジェクトの依存関係を一貫して再現可能な形で管理するためのロックファイルを生成します。これにより、チーム全員が同じ環境で開発を行うことが可能となります。

corepackとは

Corepackは、Node.jsに組み込まれているパッケージマネージャーマネージャーです。Corepackを使用することで、npm、yarn、pnpmなどのパッケージマネージャーを簡単にインストール、ローカルに特定バージョンに固定することができます。Corepackの利点をいくつか挙げると:

  1. バージョン管理: Corepackを使用することで、プロジェクトごとに特定のバージョンのパッケージマネージャーを指定・固定することができます。これにより、チーム全体で同じバージョンのツールを使用することが保証され、互換性の問題を避けることができます。

  2. 簡単なセットアップ: Corepackを使用すると、パッケージマネージャーのインストールやバージョン管理がシンプルになります。

  3. 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.jsonpackageManagerフィールドを追加して揃えたいバージョンを指定してください。

package.json
  "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に書くことで指定できます。

.npmrc
use-node-version=20.14.0

最後に

この設定を行うことで、チーム全員が同じバージョンのpnpmとNode.jsを使用して開発を行うことができます。これにより、依存関係のインストールの際のトラブルや環境の不一致による問題を起きづらくできるはずです!
pnpmを使って開発している方はぜひ参考にしてみてください!

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4