mirror of
https://github.com/samanhappy/mcphub.git
synced 2025-12-24 02:39:19 -05:00
422 lines
7.9 KiB
Plaintext
422 lines
7.9 KiB
Plaintext
---
|
||
title: '开发指南'
|
||
description: 'MCPHub 本地开发环境搭建和开发工作流指南'
|
||
---
|
||
|
||
## 概述
|
||
|
||
本指南将帮助您搭建 MCPHub 的本地开发环境,了解项目结构,并掌握开发工作流。
|
||
|
||
<Info>**前提条件**:请确保已安装 Node.js 18+ 和 Git。</Info>
|
||
|
||
## 环境准备
|
||
|
||
### 系统要求
|
||
|
||
在开始开发之前,请确保您的系统满足以下要求:
|
||
|
||
<CardGroup cols={2}>
|
||
<Card title="软件依赖" icon="download">
|
||
- **Node.js**: 18.0+ 版本 - **npm**: 8.0+ 版本 - **Git**: 最新版本 - **Docker**:
|
||
可选,用于容器化开发
|
||
</Card>
|
||
<Card title="推荐工具" icon="toolbox">
|
||
- **VS Code**: 推荐的代码编辑器 - **Postman**: API 测试工具 - **TablePlus**: 数据库管理工具 -
|
||
**Docker Desktop**: 容器管理
|
||
</Card>
|
||
</CardGroup>
|
||
|
||
### 验证环境
|
||
|
||
```bash
|
||
# 检查 Node.js 版本
|
||
node --version # 应该 >= 18.0.0
|
||
|
||
# 检查 npm 版本
|
||
npm --version # 应该 >= 8.0.0
|
||
|
||
# 检查 Git 版本
|
||
git --version
|
||
|
||
# 检查 Docker(可选)
|
||
docker --version
|
||
```
|
||
|
||
## 克隆项目
|
||
|
||
### 获取源代码
|
||
|
||
```bash
|
||
# 克隆主仓库
|
||
git clone https://github.com/mcphub/mcphub.git
|
||
cd mcphub
|
||
|
||
# 或者克隆您的 fork
|
||
git clone https://github.com/YOUR_USERNAME/mcphub.git
|
||
cd mcphub
|
||
```
|
||
|
||
### 项目结构
|
||
|
||
```
|
||
mcphub/
|
||
├── src/ # 源代码目录
|
||
│ ├── controllers/ # 控制器层
|
||
│ ├── middleware/ # 中间件
|
||
│ ├── models/ # 数据模型
|
||
│ ├── routes/ # 路由定义
|
||
│ ├── services/ # 业务逻辑层
|
||
│ ├── utils/ # 工具函数
|
||
│ └── index.ts # 应用入口
|
||
├── tests/ # 测试文件
|
||
├── docs/ # 文档源码
|
||
├── docker/ # Docker 配置
|
||
├── scripts/ # 构建脚本
|
||
├── prisma/ # 数据库模式
|
||
├── package.json # 项目依赖
|
||
├── tsconfig.json # TypeScript 配置
|
||
├── .env.example # 环境变量示例
|
||
└── README.md # 项目说明
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
### 安装项目依赖
|
||
|
||
```bash
|
||
# 安装生产和开发依赖
|
||
npm install
|
||
|
||
# 仅安装生产依赖
|
||
npm ci --only=production
|
||
```
|
||
|
||
### 全局工具安装
|
||
|
||
```bash
|
||
# 安装 TypeScript 编译器
|
||
npm install -g typescript
|
||
|
||
# 安装开发工具
|
||
npm install -g tsx nodemon prisma
|
||
|
||
# 安装 MCPHub CLI(可选)
|
||
npm install -g @mcphub/cli
|
||
```
|
||
|
||
## 配置开发环境
|
||
|
||
### 环境变量配置
|
||
|
||
```bash
|
||
# 复制环境变量模板
|
||
cp .env.example .env
|
||
|
||
# 编辑环境变量
|
||
nano .env
|
||
```
|
||
|
||
开发环境的 `.env` 配置示例:
|
||
|
||
```bash title=".env"
|
||
# 应用配置
|
||
NODE_ENV=development
|
||
PORT=3000
|
||
HOST=localhost
|
||
|
||
# 数据库配置
|
||
DATABASE_URL=sqlite:./data/dev.db
|
||
|
||
# JWT 配置
|
||
JWT_SECRET=dev-jwt-secret-key
|
||
JWT_EXPIRES_IN=7d
|
||
|
||
# 日志配置
|
||
LOG_LEVEL=debug
|
||
LOG_FORMAT=dev
|
||
|
||
# CORS 配置
|
||
CORS_ORIGIN=http://localhost:3000,http://localhost:3001
|
||
|
||
# 管理员账户
|
||
ADMIN_EMAIL=dev@mcphub.io
|
||
ADMIN_PASSWORD=dev123
|
||
|
||
# 开发功能开关
|
||
ENABLE_DEBUG_ROUTES=true
|
||
ENABLE_SWAGGER=true
|
||
ENABLE_HOT_RELOAD=true
|
||
```
|
||
|
||
### 数据库初始化
|
||
|
||
```bash
|
||
# 生成 Prisma 客户端
|
||
npx prisma generate
|
||
|
||
# 运行数据库迁移
|
||
npx prisma migrate dev --name init
|
||
|
||
# 填充测试数据
|
||
npm run db:seed
|
||
```
|
||
|
||
## 启动开发服务器
|
||
|
||
### 开发模式启动
|
||
|
||
```bash
|
||
# 启动开发服务器(带热重载)
|
||
npm run dev
|
||
|
||
# 或者使用 tsx 直接运行
|
||
npx tsx watch src/index.ts
|
||
```
|
||
|
||
### 后台模式启动
|
||
|
||
```bash
|
||
# 使用 PM2 启动(需要先安装 PM2)
|
||
npm install -g pm2
|
||
npm run dev:pm2
|
||
|
||
# 查看进程状态
|
||
pm2 status
|
||
|
||
# 查看日志
|
||
pm2 logs mcphub-dev
|
||
```
|
||
|
||
### 验证启动
|
||
|
||
访问以下 URL 验证服务是否正常启动:
|
||
|
||
- **主页**: http://localhost:3000
|
||
- **健康检查**: http://localhost:3000/health
|
||
- **API 文档**: http://localhost:3000/api/docs
|
||
- **管理界面**: http://localhost:3000/admin
|
||
|
||
## 开发工作流
|
||
|
||
### 1. 功能开发流程
|
||
|
||
```bash
|
||
# 1. 创建功能分支
|
||
git checkout -b feature/your-feature-name
|
||
|
||
# 2. 进行开发...
|
||
|
||
# 3. 运行测试
|
||
npm test
|
||
|
||
# 4. 代码格式化
|
||
npm run lint:fix
|
||
|
||
# 5. 提交代码
|
||
git add .
|
||
git commit -m "feat: add your feature description"
|
||
|
||
# 6. 推送分支
|
||
git push origin feature/your-feature-name
|
||
|
||
# 7. 创建 Pull Request
|
||
```
|
||
|
||
### 2. 代码规范
|
||
|
||
MCPHub 项目使用以下代码规范工具:
|
||
|
||
```bash
|
||
# 代码检查
|
||
npm run lint
|
||
|
||
# 自动修复
|
||
npm run lint:fix
|
||
|
||
# 格式化代码
|
||
npm run format
|
||
|
||
# 类型检查
|
||
npm run type-check
|
||
```
|
||
|
||
### 3. 测试开发
|
||
|
||
```bash
|
||
# 运行所有测试
|
||
npm test
|
||
|
||
# 运行单元测试
|
||
npm run test:unit
|
||
|
||
# 运行集成测试
|
||
npm run test:integration
|
||
|
||
# 运行测试并生成覆盖率报告
|
||
npm run test:coverage
|
||
|
||
# 监听模式运行测试
|
||
npm run test:watch
|
||
```
|
||
|
||
## 调试技巧
|
||
|
||
### 1. VS Code 调试配置
|
||
|
||
创建 `.vscode/launch.json` 文件:
|
||
|
||
```json title=".vscode/launch.json"
|
||
{
|
||
"version": "0.2.0",
|
||
"configurations": [
|
||
{
|
||
"name": "Debug MCPHub",
|
||
"type": "node",
|
||
"request": "launch",
|
||
"program": "${workspaceFolder}/src/index.ts",
|
||
"runtimeArgs": ["-r", "tsx/cjs"],
|
||
"env": {
|
||
"NODE_ENV": "development"
|
||
},
|
||
"console": "integratedTerminal",
|
||
"skipFiles": ["<node_internals>/**"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. 日志调试
|
||
|
||
使用内置的日志系统进行调试:
|
||
|
||
```typescript
|
||
import { logger } from '@/utils/logger';
|
||
|
||
// 不同级别的日志
|
||
logger.debug('调试信息', { data });
|
||
logger.info('信息日志', { userId });
|
||
logger.warn('警告信息', { error });
|
||
logger.error('错误信息', { error, stack });
|
||
```
|
||
|
||
### 3. 数据库调试
|
||
|
||
```bash
|
||
# 查看数据库内容
|
||
npx prisma studio
|
||
|
||
# 重置数据库
|
||
npx prisma migrate reset
|
||
|
||
# 查看迁移状态
|
||
npx prisma migrate status
|
||
```
|
||
|
||
## 常用开发命令
|
||
|
||
### 项目管理
|
||
|
||
```bash
|
||
# 安装新依赖
|
||
npm install package-name
|
||
npm install -D package-name # 开发依赖
|
||
|
||
# 更新依赖
|
||
npm update
|
||
|
||
# 清理缓存
|
||
npm cache clean --force
|
||
|
||
# 重新安装依赖
|
||
rm -rf node_modules package-lock.json
|
||
npm install
|
||
```
|
||
|
||
### 构建和部署
|
||
|
||
```bash
|
||
# 构建项目
|
||
npm run build
|
||
|
||
# 预览构建结果
|
||
npm run preview
|
||
|
||
# 构建 Docker 镜像
|
||
npm run docker:build
|
||
|
||
# 运行 Docker 容器
|
||
npm run docker:run
|
||
```
|
||
|
||
### 数据库操作
|
||
|
||
```bash
|
||
# 创建新迁移
|
||
npx prisma migrate dev --name your-migration-name
|
||
|
||
# 重置数据库
|
||
npx prisma migrate reset
|
||
|
||
# 推送模式变更
|
||
npx prisma db push
|
||
|
||
# 生成客户端
|
||
npx prisma generate
|
||
```
|
||
|
||
## 常见问题
|
||
|
||
<AccordionGroup>
|
||
<Accordion icon="question" title="端口被占用">
|
||
**错误信息**: `Error: listen EADDRINUSE :::3000`
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 查找占用端口的进程
|
||
lsof -i :3000
|
||
|
||
# 杀死进程
|
||
kill -9 PID
|
||
|
||
# 或者使用不同端口
|
||
PORT=3001 npm run dev
|
||
```
|
||
</Accordion>
|
||
|
||
<Accordion icon="question" title="数据库连接失败">
|
||
**可能原因**: 数据库文件权限或路径问题 **解决方案**: ```bash # 检查数据库文件 ls -la data/ #
|
||
重新初始化数据库 rm data/dev.db npx prisma migrate dev ```
|
||
</Accordion>
|
||
|
||
<Accordion icon="question" title="TypeScript 编译错误">
|
||
**解决方案**:
|
||
```bash
|
||
# 清理构建缓存
|
||
npm run clean
|
||
|
||
# 重新安装类型定义
|
||
npm install @types/node @types/express
|
||
|
||
# 重新生成 Prisma 客户端
|
||
npx prisma generate
|
||
```
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
## 进阶主题
|
||
|
||
<CardGroup cols={2}>
|
||
<Card title="架构设计" icon="building" href="/zh/development/architecture">
|
||
了解 MCPHub 的整体架构和设计模式
|
||
</Card>
|
||
<Card title="API 开发" icon="code" href="/zh/development/api-development">
|
||
学习如何开发和设计 RESTful API
|
||
</Card>
|
||
<Card title="性能优化" icon="rocket" href="/zh/development/performance">
|
||
掌握性能分析和优化技巧
|
||
</Card>
|
||
<Card title="部署指南" icon="cloud" href="/zh/deployment/production">
|
||
了解生产环境部署的最佳实践
|
||
</Card>
|
||
</CardGroup>
|