モノレポのデプロイ
モノレポでのMastraのデプロイ手順は、スタンドアロンのアプリケーションをデプロイする場合と同様です。Cloud や Serverless Platform の一部のプロバイダーでは追加要件がある場合がありますが、基本的なセットアップは同じです。
モノレポの例
この例では、Mastra アプリケーションは apps/api
に配置されています。
- index.ts
- package.json
- tsconfig.json
- package.json
環境変数
OPENAI_API_KEY
のような環境変数は、Mastra アプリケーションのルート (apps/api)
にある .env
ファイルに保存してください。例:
- .env
- package.json
- tsconfig.json
デプロイ構成
以下の画像は、Mastra Cloud へデプロイする際に、プロジェクトのルートとして apps/api
を選択する方法を示しています。プロバイダーによってインターフェースは異なる場合がありますが、設定は同一です。
依存関係の管理
モノレポでは、バージョン競合やビルドエラーを避けるために依存関係を一貫させましょう。
- すべてのパッケージが同じバージョンに解決されるよう、プロジェクトのルートで単一のロックファイルを使用する。
- 重複を防ぐために、共有ライブラリ(Mastra やフレームワークなど)のバージョンを揃える。
デプロイ時の落とし穴
モノレポで Mastra をデプロイする際に注意すべきよくある問題:
- プロジェクトルートの誤り: 正しいパッケージ(例:
apps/api
)をデプロイ対象として選択していることを確認してください。
バンドラーのオプション
transpilePackages
を使って、TypeScript のワークスペース内パッケージやライブラリをコンパイルします。各 package.json
に記載されているとおりのパッケージ名を正確に列挙してください。externals
で実行時に解決される依存関係を除外し、sourcemap
で可読なスタックトレースを出力します。
src/mastra/index.ts
import { Mastra } from "@mastra/core/mastra";
export const mastra = new Mastra({
// ...
bundler: {
transpilePackages: ["utils"],
externals: ["ui"],
sourcemap: true
}
});
そのほかの設定項目については Mastra Class を参照してください。
サポートされているモノレポ
Mastra は次に対応しています:
- npm workspaces
- pnpm workspaces
- Yarn workspaces
- Turborepo
既知の制限事項:
- Bun workspaces — 部分的に対応。既知の不具合あり
- Nx — Nx のサポートされている依存関係戦略 を利用できますが、ワークスペース内の各パッケージに
package.json
ファイルが必要です
モノレポで問題が発生している場合は、こちらをご参照ください: Monorepos Support mega issue 。