プロジェクトアーキテクチャ
LibreChatのモノレポワークスペース構造とパッケージ境界の概要。
Monorepo 構造
LibreChatは、明確に定義されたワークスペースの境界を持つモノレポとして構成されています:
| ワークスペース | 言語 | サイド | 依存関係 | 目的 |
|---|---|---|---|---|
/api | JS (レガシー) | バックエンド | packages/api, packages/data-schemas, packages/data-provider, @librechat/agents | Expressサーバー — ここでの変更は最小限に抑える |
/packages/api | TypeScript | バックエンド | packages/data-schemas, packages/data-provider | 新しいバックエンドコードはここに配置 (TSのみ、/apiから利用) |
/packages/data-schemas | TypeScript | バックエンド | packages/data-provider | データベースモデル/スキーマ、バックエンドプロジェクト間で共有可能 |
/packages/data-provider | TypeScript | 共有 | — | 共有API型、endpoint、データサービス — フロントエンドとバックエンドの両方で使用 |
/client | TypeScript/React | フロントエンド | packages/data-provider, packages/client | フロントエンドSPA |
/packages/client | TypeScript | フロントエンド | packages/data-provider | 共有フロントエンドユーティリティ |
主要な原則
/packages/api内のすべての新しいバックエンドコードは TypeScript で記述する必要があります。/apiへの変更は最小限に留めてください。/packages/apiを呼び出す薄い JS ラッパーにしてください。- データベース固有の共有ロジックは
/packages/data-schemasに配置します。 - フロントエンド/バックエンドで共有されるAPIロジック(endpoints、types、data-service)は、
/packages/data-providerに配置します。
ビルドとインストール
| コマンド | 目的 |
|---|---|
npm run smart-reinstall | 依存関係のインストール(ロックファイルが変更された場合)+ Turborepo経由でのビルド |
npm run reinstall | Node/npmのバージョン変更後や、依存関係の状態が疑わしい場合のクリーンインストール |
npm run build | Turborepo経由ですべてのコンパイル済みコードをビルド(並列、キャッシュ利用) |
npm run frontend | すべてのコンパイル済みコードを順次ビルド(レガシーフォールバック) |
npm run build:data-provider | 変更後に packages/data-provider を再ビルド |
npm run backend | バックエンドサーバーを起動 |
npm run backend:dev | ファイル監視付きでバックエンドを起動(開発用) |
npm run frontend:dev | HMR付きでフロントエンド開発サーバーを起動(ポート3090、バックエンドの実行が必要) |
- Node.js:
v24.16.0 - npm:
v11.16.0 - データベース: MongoDB
- バックエンドは
http://localhost:3080/で、フロントエンドの開発サーバーはhttp://localhost:3090/で実行されます。
注記
コーディング基準と規約の完全なセットについては、Code Standards and Conventions を参照してください。
このガイドはいかがでしたか?