monorepo でのデプロイ
monorepo での Mastra のデプロイは、スタンドアロンアプリケーションと同じ手順で行います。このガイドでは、monorepo 固有の考慮事項について説明します。基本的なビルドとデプロイの手順については、Mastra サーバーのデプロイを参照してください。
サポートされる monorepoサポートされる monorepoへの直接リンク
Mastra は次の環境で動作します。
- npm workspaces
- pnpm workspaces
- Yarn workspaces
- Turborepo
既知の制限事項は次のとおりです。
- Bun workspaces - 部分的にサポートされていますが、既知の問題があります
- Nx - Nx のサポート対象の依存関係戦略を使用できますが、Workspace パッケージ内に
package.jsonファイルが必要です
構成例構成例への直接リンク
この例では、Mastra アプリケーションは apps/api にあります。
apps/
├── api/
│ ├── src/
│ │ └── mastra/
│ │ ├── agents/
│ │ ├── tools/
│ │ ├── workflows/
│ │ └── index.ts
│ ├── package.json
│ └── tsconfig.json
└── web/
packages/
├── ui/
└── utils/
package.json
monorepo からのビルドmonorepo からのビルドへの直接リンク
monorepo ツールを使用して、適切なパッケージからビルドコマンドを実行します。特別なフラグは必要ありません。
例:
- npm
- pnpm
- yarn
- Turborepo
npm run build --workspace=apps/api
pnpm --filter api run build
yarn workspace api build
turbo run build --filter=api
パッケージの build スクリプトでは、mastra build を実行する必要があります。
{
"scripts": {
"build": "mastra build"
}
}
Workspace パッケージWorkspace パッケージへの直接リンク
Mastra アプリケーションが他の Workspace パッケージを import する場合、Mastra が自動的に処理します。
- パッケージが事前にコンパイルされている場合(
tscやtsdownでビルドされている場合など)、Mastra はコンパイル済みの JavaScript を import します - パッケージに未コンパイルの TypeScript が含まれている場合、Mastra はビルド時にトランスパイルします
ほとんどの構成では、設定なしで動作します。Workspace パッケージの import で問題が発生した場合は、そのパッケージを transpilePackages に追加してください。
export const mastra = new Mastra({
bundler: {
transpilePackages: ['@my-org/utils'],
},
})
bundler は、new Mastra() に渡すオブジェクトの直接のプロパティとして指定してください。サポートされるエントリファイルの構造については、ビルド時の設定を参照してください。
環境変数環境変数への直接リンク
.env ファイルは monorepo のルートではなく、Mastra アプリケーションのディレクトリ(apps/api/.env など)に保存してください。
デプロイ設定デプロイ設定への直接リンク
クラウド Provider にデプロイする際は、適切なパッケージがデプロイ対象として選択されていることを確認してください。アプリケーションディレクトリ(apps/api など)ではなく monorepo のルートを選択するのは、よくある間違いです。
ほとんどの Provider では、ダッシュボードまたは設定ファイルでルートディレクトリを指定できます。
依存関係の管理依存関係の管理への直接リンク
バージョンの競合やビルドエラーを避けるため、依存関係の一貫性を保ってください。
- monorepo のルートに単一の lockfileを置き、すべてのパッケージが同じバージョンを解決するようにする
- Mastra やフレームワークなどの共有ライブラリのバージョンを揃え、重複を防ぐ
トラブルシューティングトラブルシューティングへの直接リンク
Workspace パッケージが見つからないWorkspace パッケージが見つからないへの直接リンク
Mastra が Workspace パッケージを解決できない場合は、次を確認してください。
- パッケージが
package.jsonの依存関係に記載されている - lockfile が最新である(
pnpm install、npm installなどを実行済み) - パッケージに有効な
mainまたはexportsフィールドがあり、それらがpackage.jsonに記載されている
Workspace パッケージに起因する TypeScript エラーWorkspace パッケージに起因する TypeScript エラーへの直接リンク
未コンパイルの Workspace パッケージによる型エラーが表示された場合は、次のいずれかを行います。
- 最初にパッケージをビルドする(Mastra のビルドを高速化するには推奨)
- Mastra の設定で、パッケージを
transpilePackagesに追加する
関連情報関連情報への直接リンク
- Mastra サーバーのデプロイ: 基本的なビルドとデプロイのガイド
- 設定リファレンス:
bundler.transpilePackagesなどのオプション - CLI リファレンス: ビルドコマンドのフラグ