# 多人协作多端开发方案

## 一、问题分析

### 1.1 当前协作场景

```
团队成员分工：
├── 开发者A → 消费者端 (consumer)
├── 开发者B → 商家端 (merchant)
├── 开发者C → 管理端 (admin)
├── 开发者D → 分析端 (analytics)
└── 开发者E → 配送端 (delivery)
```

### 1.2 潜在冲突问题

如果每个人都在 `manifest.json` 或 `pages.json` 中修改配置：
- ❌ Git 合并冲突频繁
- ❌ 互相覆盖配置
- ❌ 影响其他端的编译

---

## 二、推荐方案：端专用配置文件

### 2.1 核心思路

**不修改公共配置文件，而是创建端专用的配置文件**

```
mall/
├── pages.json                    # 主配置（保持不变，供 App 端使用）
├── manifest.json                 # 主配置（保持不变）
│
├── config/                       # 端专用配置目录
│   ├── consumer/                 # 消费者端配置
│   │   ├── pages.json           # 消费者端页面配置
│   │   └── manifest.json        # 消费者端小程序配置
│   │
│   ├── merchant/                 # 商家端配置
│   │   ├── pages.json
│   │   └── manifest.json
│   │
│   ├── admin/                    # 管理端配置
│   │   ├── pages.json
│   │   └── manifest.json
│   │
│   ├── analytics/                # 分析端配置
│   │   ├── pages.json
│   │   └── manifest.json
│   │
│   └── delivery/                 # 配送端配置
│       ├── pages.json
│       └── manifest.json
│
└── scripts/                      # 构建脚本
    ├── build-consumer.sh        # 消费者端构建脚本
    ├── build-merchant.sh        # 商家端构建脚本
    └── ...
```

### 2.2 优势

| 优势 | 说明 |
|------|------|
| ✅ 无冲突 | 每个开发者只修改自己端的配置文件 |
| ✅ 独立发布 | 各端可独立编译和发布 |
| ✅ 代码共享 | 页面代码仍在同一仓库，便于共享 |
| ✅ 向后兼容 | 主配置文件保持不变，不影响 App 端 |

---

## 三、具体实施

### 3.1 创建端专用配置目录

```bash
# 创建配置目录结构
mkdir -p config/consumer
mkdir -p config/merchant
mkdir -p config/admin
mkdir -p config/analytics
mkdir -p config/delivery
```

### 3.2 消费者端配置示例

#### config/consumer/pages.json

```json
{
  "pages": [
    {
      "path": "pages/user/login",
      "style": { "navigationBarTitleText": "登录" }
    },
    {
      "path": "pages/main/index",
      "style": { "navigationBarTitleText": "首页", "navigationStyle": "custom" }
    },
    {
      "path": "pages/main/category",
      "style": { "navigationBarTitleText": "分类", "navigationStyle": "custom" }
    },
    {
      "path": "pages/main/cart",
      "style": { "navigationBarTitleText": "购物车", "navigationStyle": "custom" }
    },
    {
      "path": "pages/main/profile",
      "style": { "navigationBarTitleText": "我的", "navigationStyle": "custom" }
    }
  ],
  "subPackages": [
    {
      "root": "pages/mall/consumer",
      "pages": [
        { "path": "product-detail", "style": { "navigationBarTitleText": "商品详情" } },
        { "path": "shop-detail", "style": { "navigationBarTitleText": "店铺详情" } },
        { "path": "search", "style": { "navigationBarTitleText": "搜索" } },
        { "path": "checkout", "style": { "navigationBarTitleText": "结算" } },
        { "path": "payment", "style": { "navigationBarTitleText": "支付" } },
        { "path": "orders", "style": { "navigationBarTitleText": "订单" } },
        { "path": "order-detail", "style": { "navigationBarTitleText": "订单详情" } },
        { "path": "favorites", "style": { "navigationBarTitleText": "收藏" } },
        { "path": "coupons", "style": { "navigationBarTitleText": "优惠券" } },
        { "path": "address-list", "style": { "navigationBarTitleText": "地址管理" } },
        { "path": "address-edit", "style": { "navigationBarTitleText": "编辑地址" } },
        { "path": "chat", "style": { "navigationBarTitleText": "客服" } },
        { "path": "points/index", "style": { "navigationBarTitleText": "积分" } },
        { "path": "member/index", "style": { "navigationBarTitleText": "会员" } },
        { "path": "wallet", "style": { "navigationBarTitleText": "钱包" } },
        { "path": "settings", "style": { "navigationBarTitleText": "设置" } }
      ]
    }
  ],
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "商城",
    "navigationBarBackgroundColor": "#ffffff",
    "backgroundColor": "#f5f5f5"
  },
  "tabBar": {
    "color": "#999999",
    "selectedColor": "#ff5000",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [
      { "pagePath": "pages/main/index", "text": "首页", "iconPath": "static/tabbar/home.png", "selectedIconPath": "static/tabbar/home-active.png" },
      { "pagePath": "pages/main/category", "text": "分类", "iconPath": "static/tabbar/category.png", "selectedIconPath": "static/tabbar/category-active.png" },
      { "pagePath": "pages/main/cart", "text": "购物车", "iconPath": "static/tabbar/cart.png", "selectedIconPath": "static/tabbar/cart-active.png" },
      { "pagePath": "pages/main/profile", "text": "我的", "iconPath": "static/tabbar/profile.png", "selectedIconPath": "static/tabbar/profile-active.png" }
    ]
  }
}
```

#### config/consumer/manifest.json

```json
{
  "name": "商城消费者端",
  "appid": "__UNI__CONSUMER",
  "description": "商城消费者端小程序",
  "versionName": "1.0.0",
  "versionCode": "100",
  "mp-weixin": {
    "appid": "wx_consumer_appid",
    "setting": {
      "urlCheck": false,
      "es6": true,
      "postcss": true,
      "minified": true
    },
    "usingComponents": true,
    "optimization": {
      "subPackages": true
    }
  }
}
```

### 3.3 构建脚本

#### scripts/build-consumer.sh

```bash
#!/bin/bash
# 消费者端小程序构建脚本

# 复制消费者端配置到根目录
cp config/consumer/pages.json pages.json
cp config/consumer/manifest.json manifest.json

# 执行编译
uni build -p mp-weixin

# 编译完成后恢复原配置（可选）
# git checkout pages.json manifest.json

echo "消费者端小程序构建完成！"
```

#### scripts/dev-consumer.sh

```bash
#!/bin/bash
# 消费者端开发脚本

# 复制消费者端配置到根目录
cp config/consumer/pages.json pages.json
cp config/consumer/manifest.json manifest.json

# 启动开发服务器
uni -p mp-weixin

echo "消费者端开发环境已启动！"
```

---

## 四、Git 协作策略

### 4.1 .gitignore 配置

```gitignore
# 编译产物
unpackage/

# 临时配置文件（可选）
# 如果不想提交临时替换的配置，可以忽略
# pages.json
# manifest.json
```

### 4.2 分支策略

```
main                    # 主分支（稳定版本）
├── develop             # 开发分支
│   ├── feature/consumer    # 消费者端功能分支
│   ├── feature/merchant    # 商家端功能分支
│   ├── feature/admin       # 管理端功能分支
│   └── ...
└── release/consumer       # 消费者端发布分支
```

### 4.3 提交规范

```
feat(consumer): 添加会员功能
fix(merchant): 修复订单列表bug
docs(admin): 更新管理端文档
style(analytics): 优化分析端样式
```

---

## 五、HBuilderX 配置（推荐）

### 5.1 创建多个运行配置

在 HBuilderX 中，可以为每个端创建独立的运行配置：

**运行 → 运行到小程序模拟器 → 消费者端微信小程序**

配置文件：`.hbuilderx/launch.json`

```json
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "消费者端-微信小程序",
      "type": "uni-app",
      "platform": "mp-weixin",
      "args": {
        "pages": "config/consumer/pages.json",
        "manifest": "config/consumer/manifest.json"
      }
    },
    {
      "name": "商家端-微信小程序",
      "type": "uni-app",
      "platform": "mp-weixin",
      "args": {
        "pages": "config/merchant/pages.json",
        "manifest": "config/merchant/manifest.json"
      }
    }
  ]
}
```

---

## 六、团队协作流程

### 6.1 开发流程

```
1. 拉取最新代码
   git pull origin develop

2. 创建功能分支
   git checkout -b feature/consumer/member-function

3. 开发（只修改消费者端相关文件）
   - 修改 pages/mall/consumer/*.uvue
   - 修改 config/consumer/pages.json（如需添加新页面）

4. 提交代码
   git add .
   git commit -m "feat(consumer): 添加会员功能"

5. 推送并创建 PR
   git push origin feature/consumer/member-function
```

### 6.2 编译发布流程

```
1. 切换到发布分支
   git checkout release/consumer

2. 执行构建脚本
   ./scripts/build-consumer.sh

3. 上传小程序代码
   微信开发者工具 → 上传

4. 提交审核
   微信公众平台 → 提交审核
```

---

## 七、注意事项

### 7.1 共享代码修改

如果修改了共享代码（如 `utils/`、`components/`、`types/`），需要：
1. 通知相关开发者
2. 确保不影响其他端
3. 在 PR 中详细说明

### 7.2 配置文件同步

如果主 `pages.json` 有公共页面更新，需要同步到各端的配置文件：
```bash
# 同步公共页面配置
./scripts/sync-common-pages.sh
```

### 7.3 冲突处理

如果发生配置冲突：
1. 优先保留各端专用配置
2. 合并公共配置
3. 团队沟通确认

---

## 八、总结

### 推荐方案
**端专用配置文件 + 构建脚本**

### 核心优势
| 优势 | 说明 |
|------|------|
| ✅ 无冲突 | 每个开发者只修改自己端的配置 |
| ✅ 体积可控 | 每个端只编译自己需要的页面 |
| ✅ 独立发布 | 各端可独立发布小程序 |
| ✅ 代码共享 | 页面代码仍在同一仓库 |

### 目录结构
```
config/
├── consumer/     # 消费者端配置（开发者A维护）
├── merchant/     # 商家端配置（开发者B维护）
├── admin/        # 管理端配置（开发者C维护）
├── analytics/    # 分析端配置（开发者D维护）
└── delivery/     # 配送端配置（开发者E维护）
```
