monorepo を運用していると、パッケージごとに参照しているライブラリのバージョンが異なっていて、結果として動作不良やビルドエラーにつながるケースがあります。こういった状態を回避する方法として pnpm v 10 で導入された Catalogs 機能が使えます。
最近 dependabot も対応しました。
Catalogs では、monorepo の定義ファイルである pnpm-workspace.yaml
に利用したいバージョンを記載しておくことで、各パッケージからは catalog:
でそれを参照することができます。例えば React のバージョンを 19.0.0 に統一したい場合は次のようにします。
pnpm-workspace.yaml:
catalog:
react: 19.0.0
packages/foo/package.json:
{
"dependencies": {
"react": "catalog:"
}
}
packages/bar/package.json:
{
"dependencies": {
"react": "catalog:"
}
}
こうすると packages/foo
でも packages/bar
でも、同じ React 19.0.0 が利用できるようになります。