--- title: '开发指南' description: 'MCPHub 本地开发环境搭建和开发工作流指南' --- ## 概述 本指南将帮助您搭建 MCPHub 的本地开发环境,了解项目结构,并掌握开发工作流。 **前提条件**:请确保已安装 Node.js 18+ 和 Git。 ## 环境准备 ### 系统要求 在开始开发之前,请确保您的系统满足以下要求: - **Node.js**: 18.0+ 版本 - **npm**: 8.0+ 版本 - **Git**: 最新版本 - **Docker**: 可选,用于容器化开发 - **VS Code**: 推荐的代码编辑器 - **Postman**: API 测试工具 - **TablePlus**: 数据库管理工具 - **Docker Desktop**: 容器管理 ### 验证环境 ```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": ["/**"] } ] } ``` ### 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 ``` ## 常见问题 **错误信息**: `Error: listen EADDRINUSE :::3000` **解决方案**: ```bash # 查找占用端口的进程 lsof -i :3000 # 杀死进程 kill -9 PID # 或者使用不同端口 PORT=3001 npm run dev ``` **可能原因**: 数据库文件权限或路径问题 **解决方案**: ```bash # 检查数据库文件 ls -la data/ # 重新初始化数据库 rm data/dev.db npx prisma migrate dev ``` **解决方案**: ```bash # 清理构建缓存 npm run clean # 重新安装类型定义 npm install @types/node @types/express # 重新生成 Prisma 客户端 npx prisma generate ``` ## 进阶主题 了解 MCPHub 的整体架构和设计模式 学习如何开发和设计 RESTful API 掌握性能分析和优化技巧 了解生产环境部署的最佳实践