概要
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と同じように動かしていると思うので、必要に迫られない限りは設定しないほうが良さそうですね。