# mid-cli

中台微服务脚手架命令行工具

## 环境要求

- Node.js >= 24.0.0
- pnpm 包管理器 (推荐)
- TypeScript >= 6.0.0 (全局安装)
- 访问私有 npm 仓库权限

## 安装(只需要全局安装一次)

### 安装 pnpm (如未安装)

```bash
npm install -g pnpm
```

### 全局安装 TypeScript

```bash
npm install -g typescript
```

### 安装 mid-cli

```bash
npm install -g midplatform-non-cli --registry=https://dev365.keytop.cn/nexus/repository/npm-group/
```

## 使用方法

### 创建新项目

```bash
mid-cli init <project-name>
```

#### 示例

```bash
# 交互式创建项目
mid-cli init cn.keytop.ns.api.example


# 指定参数跳过交互
mid-cli init cn.keytop.ns.api.example \
  --authorization "your-authorization" \
  --author "作者名称"
```

### 命令选项

| 选项 | 说明 |
|------|------|

| `--force` | 强制覆盖已存在的目录 |
| `-r, --registry <url>` | 指定 npm 仓库地址 |
| `--description <desc>` | 项目描述（必填） |
| `--author <author>` | 作者名称 |

### 拉取中台项目（clone）

```bash
mid-cli clone <project-version-id>
```

#### 示例

```bash
# 最简用法
mid-cli clone e5a57851153e49ea8b0cb73795232f41

# 指定本地项目名
mid-cli clone e5a57851153e49ea8b0cb73795232f41 --project-name cn.keytop.ns.api.demo

# 指定 authorization（可选）
mid-cli clone e5a57851153e49ea8b0cb73795232f41 --authorization "your-authorization"

# 强制覆盖已有目录并跳过依赖安装
mid-cli clone e5a57851153e49ea8b0cb73795232f41 --force --skip-install
```

#### clone 命令选项

| 选项 | 说明 |
|------|------|
| `--project-name <name>` | 本地项目名称（默认使用中台项目标题） |
| `--authorization <auth>` | 授权信息（不传则优先尝试配置和缓存） |
| `--force` | 强制覆盖已存在目录 |
| `--skip-install` | 跳过依赖安装 |
| `-r, --registry <url>` | 指定依赖安装仓库地址 |



## 获取 authorization

1. 登录 https://me.keytop.cn
2. 按 F12 打开开发者工具
3. 在网络请求头中复制 authorization 值


## 开发调试

```bash
# 启动开发模式（支持热启动，代码修改自动重启）
pnpm run dev

# 构建项目
pnpm run build
```

### 开发模式说明

- 支持热启动，修改代码后自动重启服务
- 可通过 Postman 或其他 API 工具测试接口

### Postman 请求说明

开发模式下，可直接使用 Postman 测试服务接口：

1. 启动开发服务：`pnpm run dev`
2. 在 Postman 中配置请求地址：`http://localhost:{端口}/{服务路径}`


## 上传代码到中台

```bash
# 上传代码到中台
pnpm run upload

# 上传并发布版本（备注默认为"发布版本"）
pnpm run upload -- --publish

# 上传并发布版本（自定义备注）
pnpm run upload -- --publish "修复了订单查询bug"
```

### --publish 参数说明

使用 `--publish` 参数后，上传流程将自动执行以下步骤：

1. **同步代码** - 将本地代码上传到中台
2. **发布版本** - 自动创建构建版本
3. **轮询构建状态** - 每5秒检查一次构建进度，等待构建完成
4. **自动部署** - 构建成功后自动部署到测试环境
5. **设置默认版本** - 部署成功后自动将该版本设为默认版本

> 注意：构建和部署需要一定时间，使用 `--publish` 后请耐心等待流程完成。

## License

MIT
