0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pnpmでモノレポ構成時のパッケージ参照方法

Posted at

はじめに

pnpmコマンドを使って、モノレポ構成のプロジェクトを作っています。

私がよく使う場面としては、クライアントサイドをReact で、サーバーサイドをexpress、そしてそれらのやり取りで使う 共通のタイプを定義するパッケージプロジェクトの3つがあるときです。

参考: モノレポ(Monorepo)構成

複数のプロジェクトやパッケージを1つのリポジトリで管理する手法。

特徴
  • 1つのリポジトリに複数のプロジェクト が含まれる
  • それぞれのプロジェクトが パッケージ(モジュール) として管理される
  • パッケージ間で依存関係を持てる (共有コードが簡単に利用できる)

:skull_crossbones:今回解決する課題: パッケージの定義を参照できない

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できません。

:bulb:解決方法

利用するプロジェクトのpackage.jsonへ、直接手入力で 依存関係を書きます。

package.json(一部)
"dependencies": {
    "@my-monorepo/my-shared-types": "workspace:*"
}

おわりに

調べるのにいちいち時間がかかるので自分向け備忘録でした。誰かの参考になれば幸いです。:smiley:

pnpmコマンドを使わず手で追記しないといけないというのは、Geminiさんが教えてくれました。ChatGPTさん、perplexityさんの言うことを素直に聞いてコマンドで頑張ると、沼に落ちます。(2025/4時点)

ではよいpnpmライフを!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?