项目架构
LibreChat 的 monorepo 工作区结构与包边界概述。
Monorepo 结构
LibreChat 采用 monorepo(单体仓库)结构,并具有明确定义的工作区边界:
| 工作区 | 语言 | 端侧 | 依赖 | 用途 |
|---|---|---|---|---|
/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 | 共享的前端工具库 |
核心原则
- 所有新的后端代码必须使用 TypeScript,位于
/packages/api中。 - 保持
/api的变更在绝对最小范围内 —— 仅保留调用/packages/api的轻量级 JS 包装器。 - 特定于数据库的共享逻辑应放在
/packages/data-schemas中。 - 前端/后端共享的 API 逻辑(endpoints、types、data-service)应放置在
/packages/data-provider中。
构建与安装
| 命令 | 用途 |
|---|---|
npm run smart-reinstall | 安装依赖(如果 lockfile 已更改)+ 通过 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。
这篇指南怎么样?