yarn-trpc-express-sample

やりたいことは次の3つです。

  • tsc --watchでtRPCのサーバー側をビルドして、クライアント側ではd.tsを使う
  • yarn v3を使ってみる
  • yarn workspaces focusで、サーバー側に必要なパッケージのみをインストールする

tRPCはコード生成がないところがメリットなのかなと思っていたのですが、サーバー側の実装が増えるとtsserverに負担がかかりそうなので、ビルドしてみようと思いました。

サーバー側に必要なパッケージのみをインストールしたいのは、コンテナイメージなどを作るときの容量を小さくするためです。yarn workspace focusを使えばできそうだったので試してみます。yarn workspace focusはworkspace-toolsプラグイン(v2~)が必要だったため、yarn v3も使ってみようと思いました。

実行方法

yarn install

# server
cd server
yarn run dev

# client
cd client
ts-node --transpileOnly src/index.ts

サーバー側に必要なパッケージのみをインストールする

nmHoistingLimits: workspacesを設定すると、ワークスペースの依存はワークスペース直下のnode_modulesにインストールされます。

yarn workspaces focusを有効化します。

yarn plugin import workspace-tools

次のコマンドで、サーバーのワークスペースで必要な依存のみをインストールできます。

yarn workspaces focus @sample/server

確認

# node_modulesインストール前
$ du -sh
312K    .
# サーバー側の依存のみインストール
$ yarn workspaces focus @sample/server
$ du -sh
 63M    .
# 全ての依存をインストール
$ yarn install
$ du -sh
110M    .