corepack とは
Node.js の実行環境には、パッケージマネージャーとして標準で npm
コマンドが搭載されていますが、npm
の代わりに yarn
や pnpm
などを導入しているプロジェクトが多くあります。
従来は、これらのコマンドを npm install -g pnpm
のように別途インストールする必要がありましたが、Node.js に標準搭載された corepack
を使用すると、初めからインストールされているかのようにyarn
や pnpm
コマンドを実行できるようになります。
また、使用するパッケージマネージャーを、package.json
の packageManager
プロパティで管理することができるので、プロジェクト内で使用するパッケージマネージャーとそのバージョンを統一できます。
corepack を有効化する
corepack
コマンドは Node.js
環境に組み込まれていますが、Node.js 21 の時点ではまだ実験段階 (experimental status) のため、corepack enable
コマンドを実行して明示的に有効化 (Opt-in) しておく必要があります。
このコマンドは、システム内で一度だけ実行すれば大丈夫です。
このコマンドを実行することで、node
コマンドの実行ファイルが置かれたディレクトリ内に、yarn
や pnpm
などのシンボリックリンクが生成されます。
これで、システム全体で yarn
や pnpm
コマンドを実行できるようになります。
もし、npm install
や brew
でグローバルインストールした yarn
や pnpm
がある場合は、もう必要ないのでアンインストールしておきましょう。
各パッケージマネージャーのコマンド(シンボリックリンク)が、node
と同じ場所に存在していれば、おそらくうまくいっています。
$ which node npm yarn pnpm
/Users/maku/.nvm/versions/node/v21.6.1/bin/node
/Users/maku/.nvm/versions/node/v21.6.1/bin/npm
/Users/maku/.nvm/versions/node/v21.6.1/bin/yarn
/Users/maku/.nvm/versions/node/v21.6.1/bin/pnpm
corepack で yarn や pnpm を使用するよう設定する
corepack
経由の yarn
や pnpm
を使用する場合、package.json
ファイルの packageManager
プロパティで、使用するパッケージマネージャーとそのバージョンを定義しておくことができます。
ここでは、テスト用の Node.js アプリを使って設定してみます。
プロジェクト内で使用するパッケージマネージャーは、corepack use
コマンドで指定します。
例えば、パッケージマネージャーとして pnpm
を使うよう指定した場合、package.json
ファイルに次のように記録されます。
あとは、通常通り yarn
や pnpm
コマンドを使って Node パッケージをインストールしていけば OK です。
$ pnpm install dotenv
使用する pnpm
のバージョンは package.json
に記述されているので、チーム内の他のメンバーが pnpm
コマンドを実行するときも同じバージョンが使われるようになります。