# mdye-cli 开发指南

## 规则

- **永远使用中文回复问题**
- 修改涉及用户可见文案时，需同步更新 `src/locales/` 下的多语言文件（zh-CN、zh-Hant、en-US、ja）

## 项目概述

mdye-cli 是明道 HAP（应用平台）的视图插件开发工具，用于创建、开发、构建和发布自定义视图插件。支持 Vue 2、Vue 3、React、React + shadcn 等模板。

## 技术栈

- **运行时**: Node.js
- **CLI 框架**: commander
- **构建**: webpack 5
- **前端模板**: Vue 2/3、React、React + shadcn
- **国际化**: i18next

## 目录结构

```
packages/mdye-cli/
├── cli.js                 # 入口文件，解析命令行参数
├── src/
│   ├── commands/          # 子命令实现
│   │   ├── auth.js       # 授权登录
│   │   ├── init.js       # 初始化项目
│   │   ├── start.js      # 启动开发服务器
│   │   ├── build.js      # 构建生产包
│   │   ├── push.js       # 提交/发布插件
│   │   ├── whoami.js     # 查看当前登录用户
│   │   ├── logout.js     # 注销
│   │   └── sync-params.js # 同步插件参数配置
│   ├── controllers/      # 业务逻辑控制器
│   │   ├── auth.js
│   │   └── build.js
│   ├── webpack/           # webpack 配置
│   │   └── webpack.config.js
│   ├── utils/             # 工具函数
│   │   ├── core.js       # 核心工具（log、env 加载等）
│   │   ├── file.js       # 文件操作
│   │   ├── i18n.js       # 国际化
│   │   ├── locale.js     # 语言配置
│   │   └── md.js         # 明道 API 相关
│   └── locales/           # 多语言文案
│       ├── zh-CN.json
│       ├── zh-Hant.json
│       ├── en-US.json
│       └── ja.json
```

## 命令说明

| 命令                                         | 说明                                                  |
| -------------------------------------------- | ----------------------------------------------------- |
| `mdye auth`                                  | HAP 授权登录                                          |
| `mdye init view --id <id> --template <name>` | 初始化插件项目，需从 web 端复制完整命令               |
| `mdye start`                                 | 启动开发服务器，支持热更新                            |
| `mdye build`                                 | 构建生产环境 bundle                                   |
| `mdye push -m <message>`                     | 提交插件到 HAP                                        |
| `mdye whoami`                                | 查看当前登录用户                                      |
| `mdye logout`                                | 注销当前环境账户                                      |
| `mdye sync-params -f <path>`                 | 同步插件参数配置，默认 `./.config/params-config.json` |

## 全局选项

- `-l, --lang <lang>`: 设置语言（zh-CN、zh-Hant、en-US、ja）
- `-ic, --ignore-certificate`: 忽略证书验证
- `-h, --help`: 帮助
- `-v, --version`: 版本号

## 开发注意事项

1. **webpack 配置**: `webpack.config.js` 为同步函数，不要改为 async，否则 build 命令会失败
2. **模板类型**: 通过 `process.env.template` 区分 vue2、react-shadcn 等，影响 loader 和 alias 配置
3. **环境变量**: `loadLocalEnv()` 和 `loadGlobalEnv()` 在 cli 启动时加载，用于 host、id 等配置
4. **新增命令**: 在 `src/commands/index.js` 中注册，并实现 `makeCommand()` 返回 commander 实例

## 相关文档

- [视图插件开发文档](https://help.mingdao.com/extensions/developer/view/)
