はじめに
pnpm
コマンドを使って、モノレポ構成のプロジェクトを作っています。
私がよく使う場面としては、クライアントサイドをReact で、サーバーサイドをexpress、そしてそれらのやり取りで使う 共通のタイプを定義するパッケージプロジェクトの3つがあるときです。
今回解決する課題: パッケージの定義を参照できない
Reactやexpressから、共通タイプとして定義したプロジェクトを参照しようとすると、そんなパッケージありませんというエラーが出ます。
具体的には👇このエラーが出るという問題です。
> pnpm add @my-monorepo/my-shared-types --filter clnt-react
ERR_PNPM_FETCH_404 GET https://registry.npmjs.org/@my-monorepo%2Fmy-shared-types: Not Found - 404
本家npmサーバーを見に行って、ないよと言っている。そりゃないよ!自分の足元を見てよ!という話。
パッケージのpackage.json
に"name": "@my-monorepo/my-shared-types"
と書いてあっても、pnpm install
しても、@my-monorepo/my-shared-types@workspace
と呼んでも(これ正しいのかわからない)、kできません。
解決方法
利用するプロジェクトのpackage.json
へ、直接手入力で 依存関係を書きます。
"dependencies": {
"@my-monorepo/my-shared-types": "workspace:*"
}
おわりに
調べるのにいちいち時間がかかるので自分向け備忘録でした。誰かの参考になれば幸いです。
pnpmコマンドを使わず手で追記しないといけないというのは、Geminiさんが教えてくれました。ChatGPTさん、perplexityさんの言うことを素直に聞いてコマンドで頑張ると、沼に落ちます。(2025/4時点)
ではよいpnpmライフを!