pnpmでyarnやnpmで管理していたパッケージが参照できなかった時に見ること

概要

pnpmはnpmやyarnと同じパッケージ管理ツールです。
pnpmは、ライブラリの依存パッケージの共有によるディスク容量の節約や、インストール速度の向上が見込めるようです。
pnpm.io

ただ、pnpmはyarnやnpm と依存関係の管理方法が異なるので、切り替えた時にうまく依存関係を解決できないケースがあるようです。

yarnで動いていた依存関係がpnpmで解決できない時

自分の場合は、使っていたライブラリがさらに依存しているパッケージがうまくインストールされずに、not found パッケージ名というエラーに遭遇しました。
公式サイトによると、以下のように案内されています。

ヒント
使用しているツールがシンボリックリンクでうまく機能しない場合でも、node-linker の設定を hoisted にすることで pnpm を使い続けることができるかもしれません。 この設定によって pnpm は、npm や Yarn Classic と似た node_modules ディレクトリを作成するようになります。

https://pnpm.io/ja/npmrc#node-linker 上記の記事により詳しい解説がされています。

hoisted - シンボリックリンクは作成されず、フラットな node_modules が作成されます。 npm や Yarn Classic によって作成される node_modules と同じです。 この設定を使用すると、Yarnのライブラリーの 1 つが巻き上げに使用されます。

このhoistedの設定は.npmrcファイルにnode-linker=hoistedと記載すると良いようです。
ただ、これって結局pnpmをyarnと同じように動かしていると思うので、必要に迫られない限りは設定しないほうが良さそうですね。