@cloudglab/yapi-cli 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/README.md +6 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.js +41 -77
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/changelog.js +7 -14
  7. package/dist/core/changelog.js.map +1 -1
  8. package/dist/core/cli-output.js +7 -6
  9. package/dist/core/cli-output.js.map +1 -1
  10. package/dist/core/cli-registry.js +28 -6
  11. package/dist/core/cli-registry.js.map +1 -1
  12. package/dist/core/manifest.js +14 -4
  13. package/dist/core/manifest.js.map +1 -1
  14. package/dist/core/output.d.ts +2 -2
  15. package/dist/core/output.js +12 -45
  16. package/dist/core/output.js.map +1 -1
  17. package/dist/core/tool-registry.js +5 -0
  18. package/dist/core/tool-registry.js.map +1 -1
  19. package/dist/core/update-probe.d.ts +3 -1
  20. package/dist/core/update-probe.js +9 -4
  21. package/dist/core/update-probe.js.map +1 -1
  22. package/dist/core/url-parser.js +10 -0
  23. package/dist/core/url-parser.js.map +1 -1
  24. package/dist/install.d.ts +9 -1
  25. package/dist/install.js +74 -20
  26. package/dist/install.js.map +1 -1
  27. package/dist/manifest.json +37 -1
  28. package/dist/services/yapi/api.d.ts +255 -79
  29. package/dist/services/yapi/api.js +162 -58
  30. package/dist/services/yapi/api.js.map +1 -1
  31. package/dist/services/yapi/auth.d.ts +8 -3
  32. package/dist/services/yapi/auth.js +10 -6
  33. package/dist/services/yapi/auth.js.map +1 -1
  34. package/dist/services/yapi/authCache.js +9 -2
  35. package/dist/services/yapi/authCache.js.map +1 -1
  36. package/dist/services/yapi/config.d.ts +6 -0
  37. package/dist/services/yapi/config.js +85 -8
  38. package/dist/services/yapi/config.js.map +1 -1
  39. package/dist/services/yapi/index.d.ts +3 -3
  40. package/dist/services/yapi/index.js +2 -3
  41. package/dist/services/yapi/index.js.map +1 -1
  42. package/dist/services/yapi/types.d.ts +38 -0
  43. package/dist/tools/shared.d.ts +17 -1
  44. package/dist/tools/shared.js +25 -6
  45. package/dist/tools/shared.js.map +1 -1
  46. package/dist/tools/yapi/docs-sync.js +3 -0
  47. package/dist/tools/yapi/docs-sync.js.map +1 -1
  48. package/dist/tools/yapi/groups.d.ts +1 -1
  49. package/dist/tools/yapi/groups.js +1 -1
  50. package/dist/tools/yapi/groups.js.map +1 -1
  51. package/dist/tools/yapi/register-auth.js +116 -104
  52. package/dist/tools/yapi/register-auth.js.map +1 -1
  53. package/dist/tools/yapi/register-group.js +118 -93
  54. package/dist/tools/yapi/register-group.js.map +1 -1
  55. package/dist/tools/yapi/register-interface.js +418 -238
  56. package/dist/tools/yapi/register-interface.js.map +1 -1
  57. package/dist/tools/yapi/register-mock.d.ts +2 -0
  58. package/dist/tools/yapi/register-mock.js +240 -0
  59. package/dist/tools/yapi/register-mock.js.map +1 -0
  60. package/dist/tools/yapi/register-project.js +344 -223
  61. package/dist/tools/yapi/register-project.js.map +1 -1
  62. package/dist/tools/yapi/register-test.js +33 -25
  63. package/dist/tools/yapi/register-test.js.map +1 -1
  64. package/dist/tools/yapi/register-util.js +444 -350
  65. package/dist/tools/yapi/register-util.js.map +1 -1
  66. package/dist/tools/yapi/register.js +3 -0
  67. package/dist/tools/yapi/register.js.map +1 -1
  68. package/dist/tools/yapi/utils.d.ts +49 -0
  69. package/dist/tools/yapi/utils.js +124 -2
  70. package/dist/tools/yapi/utils.js.map +1 -1
  71. package/dist/version.d.ts +1 -1
  72. package/dist/version.js +1 -1
  73. package/package.json +18 -5
  74. package/skills/yapi-cli/SKILL.md +22 -12
  75. package/skills/yapi-cli/reference/auth.md +34 -45
  76. package/skills/yapi-cli/reference/cheatsheet.md +156 -0
  77. package/skills/yapi-cli/reference/cli.md +39 -51
  78. package/skills/yapi-cli/reference/commands.md +35 -125
  79. package/skills/yapi-cli/reference/group.md +46 -19
  80. package/skills/yapi-cli/reference/index.md +32 -0
  81. package/skills/yapi-cli/reference/install.md +30 -6
  82. package/skills/yapi-cli/reference/interface.md +71 -155
  83. package/skills/yapi-cli/reference/mock.md +93 -0
  84. package/skills/yapi-cli/reference/overview.md +7 -5
  85. package/skills/yapi-cli/reference/project.md +67 -87
  86. package/skills/yapi-cli/reference/scenarios.md +184 -0
  87. package/skills/yapi-cli/reference/test.md +20 -17
  88. package/skills/yapi-cli/reference/tooling.md +89 -0
  89. package/dist/services/yapi/cache.d.ts +0 -27
  90. package/dist/services/yapi/cache.js +0 -88
  91. package/dist/services/yapi/cache.js.map +0 -1
@@ -2,12 +2,9 @@
2
2
 
3
3
  ## 强制判断
4
4
 
5
- 先确认用户想查的是**分组**还是**项目**:
6
-
7
- - "分组" YApi 的 Group,顶级容器
8
- - "项目" → YApi 的 Project,隶属于分组
9
-
10
- 用户给分组名时,先用 `group-list` 查全部分组,匹配名称确认 `groupId`。
5
+ - **分组** = Group,顶级容器
6
+ - **项目** = Project,隶属分组
7
+ - 只给分组名时,先 `group-list` 再确认 `groupId`
11
8
 
12
9
  ## 查询
13
10
 
@@ -17,49 +14,79 @@
17
14
  yapi group-list
18
15
  ```
19
16
 
20
- 返回可见的全部分组(id / group_name / group_desc)。
17
+ 返回可见分组列表。
18
+
19
+ ### 我的分组
20
+
21
+ ```bash
22
+ yapi group-mine
23
+ ```
24
+
25
+ 返回当前用户参与的分组。
21
26
 
22
27
  ### 分组详情
23
28
 
24
29
  ```bash
25
- yapi group-get --groupId <id>
30
+ yapi group-get --id <id>
26
31
  ```
27
32
 
28
- 查分组基本信息、成员数等。
33
+ 查分组详情。
29
34
 
30
35
  ## 写入
31
36
 
32
37
  ### 创建分组
33
38
 
34
39
  ```bash
35
- yapi group-add --groupName <name> [--groupDesc <desc>] --confirm true
40
+ yapi group-create --name <name> [--desc <desc>] --confirm true
36
41
  ```
37
42
 
38
43
  ### 更新分组
39
44
 
40
45
  ```bash
41
- yapi group-up --groupId <id> [--groupName <name>] [--groupDesc <desc>] --confirm true
46
+ yapi group-update --groupId <id> [--name <name>] [--desc <desc>] --confirm true
42
47
  ```
43
48
 
44
49
  ### 删除分组
45
50
 
46
51
  ```bash
47
- yapi group-del --groupId <id> --confirm true
52
+ yapi group-delete --groupId <id> --confirm true
53
+ ```
54
+
55
+ ### 分组成员列表
56
+
57
+ ```bash
58
+ yapi group-member-list --groupId <id>
59
+ ```
60
+
61
+ ### 添加分组成员
62
+
63
+ ```bash
64
+ yapi group-member-add --groupId <id> --uid <uid> [--role <role>] --confirm true
65
+ ```
66
+
67
+ ### 修改分组成员角色
68
+
69
+ ```bash
70
+ yapi group-member-role --groupId <id> --memberUid <uid> --role <role> --confirm true
48
71
  ```
49
72
 
50
- ### 分组成员
73
+ ### 移除分组成员
51
74
 
52
75
  ```bash
53
- yapi member-list --groupId <id>
76
+ yapi group-member-remove --groupId <id> --memberUid <uid> --confirm true
54
77
  ```
55
78
 
56
79
  ## 参数对照
57
80
 
58
81
  | 参数名 | 类型 | 必填 | 说明 |
59
82
  |--------|------|------|------|
60
- | `groupId` | number | group-get/up/del/member-list | 分组 ID |
61
- | `groupName` | string | group-add | 分组名称 |
62
- | `groupDesc` | string | | 分组描述 |
83
+ | `id` | number | group-get | 分组 ID |
84
+ | `groupId` | number | group-update/delete/member-* | 分组 ID |
85
+ | `name` | string | group-create | 分组名称 |
86
+ | `desc` | string | 否 | 分组描述 |
87
+ | `uid` | number | group-member-add | 要加入分组的用户 UID |
88
+ | `memberUid` | number | group-member-role/remove | 已在组内的成员 UID |
89
+ | `role` | string | group-member-add/role | 成员角色 |
63
90
  | `confirm` | boolean | 写操作 | 确认执行 |
64
91
 
65
92
  ## 常见链路
@@ -67,11 +94,11 @@ yapi member-list --groupId <id>
67
94
  ```bash
68
95
  # 查全部分组 → 定位目标分组 → 查看详情
69
96
  yapi group-list
70
- yapi group-get --groupId <id>
97
+ yapi group-get --id <id>
71
98
 
72
99
  # 查分组下的项目
73
100
  yapi project-list --groupId <id>
74
101
 
75
102
  # 查分组成员
76
- yapi member-list --groupId <id>
103
+ yapi group-member-list --groupId <id>
77
104
  ```
@@ -0,0 +1,32 @@
1
+ # Reference 索引
2
+
3
+ 按场景分类的二级文档。SKILL.md 主入口保持精简,本目录覆盖 CLI 注册的全部命令。
4
+
5
+ ## 主链路(高频 / 日常)
6
+
7
+ | 文档 | 场景 | 关键命令 |
8
+ | --- | --- | --- |
9
+ | [install.md](./install.md) | 安装 / 更新 / 卸载 | `install`, `update`, `uninstall` |
10
+ | [cli.md](./cli.md) | CLI 基础 | `help`, `list`, `version`, `whoami`, `doctor`, `changelog` |
11
+ | [overview.md](./overview.md) | 命令总览(按分组) | 全部命令的分组列表 |
12
+ | [auth.md](./auth.md) | 认证 / 配置 / Token | `config-init`, `login`, `login-by-token`, `logout`, `whoami` |
13
+ | [group.md](./group.md) | 分组 | `group-list`, `group-get`, `group-create`, `group-update`, `group-delete`, `group-member-add`, `group-member-role`, `group-member-remove` |
14
+ | [project.md](./project.md) | 项目 | `project-list`, `project-get`, `project-create`, `project-update`, `project-copy`, `project-delete`, `project-token`, `project-snapshot`, `project-env-update`, `project-tag-update`, `project-mock-toggle`, `project-mock-script`, `project-member-add`, `project-member-remove`, `project-member-role`, `project-member-email-notice`, `project-follow`, `project-unfollow`, `project-check-name`, `project-swagger-url` |
15
+ | [interface.md](./interface.md) | 接口 / 分类 | `interface-list`, `interface-get`, `interface-snapshot`, `interface-create`, `interface-update`, `interface-save`, `interface-delete`, `interface-upload`, `interface-up-index`, `interface-up-cat-index`, `interface-mock-toggle`, `interface-mock-script`, `interface-list-by-menu`, `interface-list-by-cat`, `interface-list-public`, `interface-download-crx`, `schema-to-json`, `request`, `log`, `category-list`, `category-get`, `category-create`, `category-update`, `category-delete` |
16
+ | [mock.md](./mock.md) | 高级 Mock | `mock-script-get`, `mock-script-save`, `mock-expect-list`, `mock-expect-get`, `mock-expect-save`, `mock-expect-delete`, `mock-expect-toggle` |
17
+ | [test.md](./test.md) | 测试桩 / 开放接口 | `test-get`, `test-post`, `test-put`, `test-delete`, `test-head`, `test-options`, `test-patch`, `test-files-upload`, `test-single-upload`, `test-http-code`, `test-raw`, `test-response`, `open-project-interface-data`, `open-run-auto-test` |
18
+ | [tooling.md](./tooling.md) | 通用工具 / 集合 / 用例 / 用户 | `url-parse`, `workspace-snapshot`, `export`, `import`, `self-update`, `docs-sync`, `install-skill`, `search`, `log-list-by-update`, `col-list`, `col-cases`, `col-create`, `col-update`, `col-delete`, `col-up-index`, `col-case-up-index`, `col-case-clone`, `col-case-list-by-var-params`, `case-add`, `case-add-list`, `case-get`, `case-update`, `case-delete`, `case-run`, `case-env-list`, `user-list`, `user-search`, `user-get`, `user-avatar`, `user-projects`, `user-register`, `user-update`, `user-delete`, `user-change-password`, `user-upload-avatar` |
19
+ | [commands.md](./commands.md) | 按场景命令速查 | 全部命令索引 |
20
+
21
+ ## 兜底
22
+
23
+ | 文档 | 作用 |
24
+ | --- | --- |
25
+ | [cheatsheet.md](./cheatsheet.md) | 全量命令速查(一行一条) |
26
+ | [scenarios.md](./scenarios.md) | 场景化组合(典型链路) |
27
+
28
+ ## 维护约定
29
+
30
+ - 任何新增 / 删除 / 重命名命令必须在对应 reference 文档中同步更新;
31
+ - 写命令(schema 含 `confirm` 字段)必须在引用文档中说明前置条件与回滚提示;
32
+ - 不接受的命令(如 `request` 直接绕开 write-guard)必须在 cheatsheet 中标注「直连」标识。
@@ -1,29 +1,44 @@
1
1
  # 安装 / 更新 / 卸载
2
2
 
3
+ ## 入口 / 发现命令
4
+
5
+ ```bash
6
+ yapi list
7
+ yapi help <command>
8
+ yapi version
9
+ yapi changelog
10
+ yapi completion bash
11
+ ```
12
+
13
+ - `list`:按分组列出全部业务命令
14
+ - `help <command>`:看单命令参数
15
+ - `changelog`:查看版本变更历史
16
+ - `completion bash`:生成补全脚本
17
+
3
18
  ## 安装
4
19
 
5
- 全量安装(CLI + skill + 配置):
20
+ 默认安装 CLI + skill + 配置:
6
21
 
7
22
  ```bash
8
23
  yapi install
9
24
  npx -y @cloudglab/yapi-cli@latest install
10
25
  ```
11
26
 
12
- `install` 会在交互终端里逐步提示你填写 YApi 地址、登录用户名、登录密码和认证方式;`auth-mode` 会引导你选择 `native` 普通登录或 `ldap` 登录。
27
+ `install` 会交互收集地址、用户名、密码和认证方式。
13
28
 
14
- skill:
29
+ 仅装 skill:
15
30
 
16
31
  ```bash
17
32
  yapi install --skill-only
18
33
  ```
19
34
 
20
- CLI 配置:
35
+ 仅装 CLI 配置:
21
36
 
22
37
  ```bash
23
38
  yapi install --cli-only
24
39
  ```
25
40
 
26
- 从本地文件安装 skill:
41
+ 从本地文件装 skill:
27
42
 
28
43
  ```bash
29
44
  yapi install --skill-path ./SKILL.md
@@ -36,18 +51,27 @@ npx -y @cloudglab/yapi-cli@latest install --skill-path ./SKILL.md
36
51
  yapi update
37
52
  yapi update --cli-only
38
53
  yapi update --skill-only
54
+ yapi self-update
55
+ yapi install-skill
39
56
  ```
40
57
 
41
- 更新会先检查 npm 版本,再刷新本地 skill。
58
+ `update` 会检查 npm 版本并刷新本地 skill。
59
+
60
+ - `update`:更新 CLI 并刷新 skill
61
+ - `self-update`:只查 CLI 版本
62
+ - `install-skill`:只刷新本地 skill 文件
42
63
 
43
64
  ## 卸载
44
65
 
45
66
  ```bash
46
67
  yapi uninstall
68
+ yapi remove --confirm true # uninstall 的别名
47
69
  yapi uninstall --confirm true # 真实卸载
48
70
  yapi uninstall --confirm true --keep-config true # 保留配置
49
71
  ```
50
72
 
73
+ - `remove` 是 `uninstall` 别名
74
+
51
75
  ## 自检
52
76
 
53
77
  ```bash
@@ -2,103 +2,52 @@
2
2
 
3
3
  ## 强制判断
4
4
 
5
- 先确认用户意图:
6
- - **搜索接口** → 关键词搜索,可选 `projectId` 收窄范围
7
- - **接口列表** → 按项目查询,支持 status/method 过滤
8
- - **接口详情** → 需要 `interfaceId`
9
- - **创建 / 保存 / 部分更新 / 删除** → 写操作,需要 `--confirm true`
10
- - **分类(Category)** 项目的接口分组
11
- - **Mock** 接口级 Mock 开关和自定义脚本
12
- - **日志** 接口变更历史
13
- - **导出** 按项目导出接口定义
14
- - **集合(Collection)** 测试集合和用例
15
-
16
- ## 搜索
17
-
18
- ### 接口搜索
19
-
20
- ```bash
21
- yapi search --q <keyword> [--projectId <id>] [--page 1] [--limit 50]
22
- ```
23
-
24
- 全局关键词搜索,支持按项目收窄范围。
25
-
26
- ### 接口列表
27
-
28
- ```bash
29
- yapi interface-list --projectId <id> [--status <s>] [--method <m>] [--page <n>] [--limit <n>]
30
- ```
31
-
32
- `--status`:`done`(已完成)、`undone`(未完成)
33
- `--method`:`GET`、`POST`、`PUT`、`DELETE`
34
-
35
- ### 接口详情
36
-
37
- ```bash
38
- yapi interface-get --interfaceId <id>
39
- ```
40
-
41
- 返回接口完整定义:路径、方法、请求参数、响应示例、Mock 状态等。
42
-
43
- ## 分类
44
-
45
- ### 分类列表
46
-
47
- ```bash
48
- yapi category-list --projectId <id>
49
- ```
50
-
51
- ### 分类排序
52
-
53
- ```bash
54
- yapi interface-up-cat-index --catid <id> --index <n> --confirm true
55
- ```
56
-
57
- ## CRUD
58
-
59
- ### 创建接口
60
-
61
- ```bash
62
- yapi interface-create --projectId <id> --catId <id> --title <title> --path <path> [--method GET] [--desc <desc>] --confirm true
63
- ```
64
-
65
- ### 保存接口(upsert)
66
-
67
- ```bash
68
- yapi interface-save --projectId <id> --catId <id> --title <title> --path <path> [--method GET] [--status done|undone] [--tags a,b] [--desc <desc>] [--reqBodyType json] [--reqBody <json>] [--resBodyType json] [--resBody <json>] [--interfaceId <id>] --confirm true
69
- ```
70
-
71
- 存在则更新,不存在则创建。适合一次性保存接口完整定义;如果只想改局部字段,优先用下面的部分更新。
72
-
73
- ### 部分更新接口
74
-
75
- ```bash
76
- yapi interface-update --interfaceId <id> [--title <t>] [--path <p>] [--method <m>] [--catid <id>] [--status done|undone] [--tags a,b] [--desc <desc>] [--reqBodyType <type>] [--reqBody <json>] [--resBodyType <type>] [--resBody <json>] --confirm true
77
- ```
78
-
79
- 只改传入的字段,不会覆盖未传字段。修改 `resBody` 时,建议先 `interface-get` 再取当前值后局部改写。
80
-
81
- ### 删除接口
82
-
83
- ```bash
84
- yapi interface-delete --interfaceId <id> --confirm true
85
- ```
86
-
87
- ## Mock
88
-
89
- ### Mock 开关
90
-
91
- ```bash
92
- yapi interface-mock-toggle --interfaceId <id> [--open true] --confirm true
93
- ```
94
-
95
- ### Mock 脚本
96
-
97
- ```bash
98
- yapi interface-mock-script --interfaceId <id> --script <script> --confirm true
99
- ```
100
-
101
- YApi Mock 脚本在沙箱中执行,支持:
5
+ 先分 10 类:搜索、列表、详情、写入、分类、Mock、日志、导出、治理、集合。
6
+
7
+ ## 高频查询
8
+
9
+ | 场景 | 命令 | 用法 | 说明 |
10
+ | --- | --- | --- | --- |
11
+ | 接口搜索 | `search` | `yapi search --q <keyword> [--projectId <id>] [--page 1] [--limit 50]` | 全局或按项目搜 |
12
+ | 项目接口列表 | `interface-list` | `yapi interface-list --projectId <id> [--status done] [--method GET] [--page <n>] [--limit <n>]` | 常规入口 |
13
+ | 接口详情 | `interface-get` | `yapi interface-get --interfaceId <id>` | 取完整定义 |
14
+ | 分类列表 | `category-list` | `yapi category-list --projectId <id>` | 查项目分类 |
15
+ | 分类内接口 | `interface-list-by-cat` | `yapi interface-list-by-cat --catId <id>` | 分类维度看接口 |
16
+ | 菜单模式接口 | `interface-list-by-menu` | `yapi interface-list-by-menu --projectId <id>` | 适合树状浏览 |
17
+ | 公开项目接口 | `interface-list-public` | `yapi interface-list-public --projectId <id> [--keyword <q>] [--page <n>] [--limit <n>]` | 浏览公开接口 |
18
+ | 自定义字段 | `interface-custom-field` | `yapi interface-custom-field --projectId <id>` | 看自定义字段 |
19
+ | 变更日志 | `log` | `yapi log --interfaceId <id> [--projectId <id>]` | 查更新日志 |
20
+ | 原始请求 | `request` | `yapi request --path /api/endpoint [--method GET] [--body <json>]` | 直接发请求 |
21
+
22
+ ## 高频写入
23
+
24
+ | 场景 | 命令 | 用法 | 说明 |
25
+ | --- | --- | --- | --- |
26
+ | 创建接口 | `interface-create` | `yapi interface-create --projectId <id> --catId <id> --title <title> --path <path> [--method GET] [--status done|undone] [--tags a,b] [--desc <desc>] [--reqQuery <json>] [--reqHeaders <json>] [--reqParams <json>] [--reqBodyType json] [--reqBodyForm <json>] [--reqBody <json>] [--resBodyType json] [--resBody <json>] [--markdown <md>] [--apiOpened] --confirm true` | 建新接口。CLI 自动分析目标分类的风格(路径前缀、method 偏好、请求/响应字段),助力新接口与现有风格对齐。 |
27
+ | 保存接口 | `interface-save` | `yapi interface-save --projectId <id> --catId <id> --title <title> --path <path> [--method GET] [--status done|undone] [--tags a,b] [--desc <desc>] [--reqQuery <json>] [--reqHeaders <json>] [--reqParams <json>] [--reqBodyType json] [--reqBodyForm <json>] [--reqBody <json>] [--resBodyType json] [--resBody <json>] [--markdown <md>] [--apiOpened] [--customFieldValue <v>] [--interfaceId <id>] --confirm true` | 一次写全。新建时也会分析目标分类风格。 |
28
+ | 部分更新 | `interface-update` | `yapi interface-update --interfaceId <id> [--title <t>] [--path <p>] [--method <m>] [--catid <id>] [--status done|undone] [--tags a,b] [--desc <desc>] [--reqQuery <json>] [--reqHeaders <json>] [--reqParams <json>] [--reqBodyType <type>] [--reqBodyForm <json>] [--reqBody <json>] [--resBodyType <type>] [--resBody <json>] [--markdown <md>] [--apiOpened] [--customFieldValue <v>] [--switchNotice] [--message <text>] --confirm true` | 只改传入字段,reqQuery/reqHeaders/reqParams/reqBodyForm 整体覆盖。 |
29
+ | 删除接口 | `interface-delete` | `yapi interface-delete --interfaceId <id> --confirm true` | 不可恢复 |
30
+ | Mock 开关 | `interface-mock-toggle` | `yapi interface-mock-toggle --interfaceId <id> [--open true] --confirm true` | 开关接口级 Mock |
31
+ | Mock 脚本 | `interface-mock-script` | `yapi interface-mock-script --interfaceId <id> --script <script> --confirm true` | 设置接口脚本 |
32
+ | 导入接口 | `interface-upload` | `yapi interface-upload --projectId <id> --content <json> [--type swagger] --confirm true` | 导入 swagger/json |
33
+
34
+ > 高级 Mock(期望 / 脚本)见 `reference/mock.md`:`mock-expect-*`、`mock-script-*`。
35
+
36
+ ## 低频治理 / 维护
37
+
38
+ | 场景 | 命令 | 用法 | 说明 |
39
+ | --- | --- | --- | --- |
40
+ | 分类详情 | `category-get` | `yapi category-get --catId <id>` | 看分类详情 |
41
+ | 创建分类 | `category-create` | `yapi category-create --projectId <id> --name <name> [--desc <desc>] --confirm true` | 建目录 |
42
+ | 更新分类 | `category-update` | `yapi category-update --catId <id> [--name <name>] [--desc <desc>] --confirm true` | 改分类信息(后端不支持 status 字段) |
43
+ | 删除分类 | `category-delete` | `yapi category-delete --catId <id> --confirm true` | 会清理分类下接口 |
44
+ | 分类排序 | `interface-up-cat-index` | `yapi interface-up-cat-index --catid <id> --index <n> --confirm true` | 调整分类顺序(后端接收数组) |
45
+ | 接口排序 | `interface-up-index` | `yapi interface-up-index --id <id> --index <n> --confirm true` | 调整接口顺序(后端接收数组) |
46
+ | 接口快照 | `interface-snapshot` | `yapi interface-snapshot --interfaceId <id> [--logLimit 5]` | 详情 + 最近日志 |
47
+ | Schema 转 JSON | `schema-to-json` | `yapi schema-to-json --schema <json> [--required true]` | 生成 JSON 示例 |
48
+ | 下载 CRX | `interface-download-crx` | `yapi interface-download-crx` | 下载浏览器扩展 |
49
+
50
+ Mock 脚本在沙箱中执行,常用变量:
102
51
  - `mockJson` — 修改 Mock 返回 JSON
103
52
  - `httpCode` — 修改状态码(默认 200)
104
53
  - `resHeader` — 修改响应头
@@ -112,53 +61,12 @@ httpCode = 200;
112
61
  delay = 500;
113
62
  ```
114
63
 
115
- ## 其他
116
-
117
- ### 原始请求
118
-
119
- ```bash
120
- yapi request --path /api/endpoint [--method GET] [--body <json>]
121
- ```
122
-
123
- 走 YApi 认证,发送任意 HTTP 请求。
124
-
125
- ### 日志
126
-
127
- ```bash
128
- yapi log --interfaceId <id> [--projectId <id>]
129
- ```
130
-
131
- 接口变更历史记录。
64
+ ## 说明
132
65
 
133
- ### 导出
134
-
135
- ```bash
136
- yapi export --projectId <id> [--type json]
137
- ```
138
-
139
- `--type`:`json`、`swagger`、`openapi3`
140
-
141
- ### 下载 CRX
142
-
143
- ```bash
144
- yapi interface-download-crx
145
- ```
146
-
147
- 下载 YApi 跨域请求插件。
148
-
149
- ## 集合
150
-
151
- ### 集合列表
152
-
153
- ```bash
154
- yapi col-list --projectId <id>
155
- ```
156
-
157
- ### 集合用例
158
-
159
- ```bash
160
- yapi col-cases --projectId <id> --colId <id>
161
- ```
66
+ - 全量写定义优先 `interface-save`
67
+ - 局部改字段优先 `interface-update`
68
+ - 删分类前先 `category-get` 或 `interface-list-by-cat`
69
+ - 导出、文档同步、集合 / 用例统一看 `reference/tooling.md`
162
70
 
163
71
  ## 参数对照
164
72
 
@@ -166,12 +74,26 @@ yapi col-cases --projectId <id> --colId <id>
166
74
  |--------|------|------|------|
167
75
  | `interfaceId` | number | get/update/delete/log/toggle/script | 接口 ID |
168
76
  | `projectId` | number | list/create/export/col | 项目 ID |
169
- | `catId` | number | interface-create | 分类 ID |
170
- | `catid` | number | up-cat-index | 分类 ID |
77
+ | `catId` | number | create/list-by-cat/category-* | 分类 ID |
78
+ | `catid` | number | save/update/up-cat-index | 分类 ID |
171
79
  | `title` | string | create/update | 接口标题 |
172
80
  | `path` | string | create | 接口路径 |
173
81
  | `method` | string | 否 | HTTP 方法 |
174
82
  | `q` | string | search | 搜索关键词 |
83
+ | `keyword` | string | interface-list-public | 公开接口搜索词 |
84
+ | `index` | number | up-index / up-cat-index | 排序位置 |
85
+ | `logLimit` | number | interface-snapshot | 最近日志条数 |
86
+ | `schema` | string | schema-to-json | JSON Schema 字符串 |
87
+ | `required` | boolean | schema-to-json | 可选,是否生成必填字段示例 |
88
+ | `reqQuery` | JSON 字符串 | create/update/save | 请求查询参数数组 `[{"name":"page","example":"1","desc":"页码","required":"1"}]` |
89
+ | `reqHeaders` | JSON 字符串 | create/update/save | 请求头数组 `[{"name":"Authorization","value":"Bearer xxx"}]` |
90
+ | `reqParams` | JSON 字符串 | create/update/save | URL 路径参数数组 `[{"name":"id","example":"123","desc":"用户ID"}]` |
91
+ | `reqBodyForm` | JSON 字符串 | create/update/save | 请求体表单字段数组 `[{"name":"username","type":"string","required":"1"}]` |
92
+ | `markdown` | string | create/update/save | 接口文档 Markdown |
93
+ | `apiOpened` | boolean | 否 | 是否对外开放接口 |
94
+ | `customFieldValue` | string | update/save | 自定义字段值 |
95
+ | `switchNotice` | boolean | 否 | update 时发送变更通知 |
96
+ | `message` | string | 否 | update 备注信息 |
175
97
  | `confirm` | boolean | 写操作 | 确认执行 |
176
98
 
177
99
  ## 常见链路
@@ -182,14 +104,8 @@ yapi search --q <keyword> --limit 10
182
104
  yapi interface-get --interfaceId <id>
183
105
  yapi log --interfaceId <id>
184
106
 
185
- # 创建接口步骤
186
- yapi category-list --projectId <id>
187
- yapi interface-create --projectId <id> --catId <cid> --title <t> --path <p> --confirm true
188
- yapi interface-mock-script --interfaceId <id> --script <s> --confirm true
189
- yapi interface-list --projectId <id>
190
-
191
- # 接口完整上下文
192
- yapi interface-get --interfaceId <id>
193
- yapi interface-mock-toggle --interfaceId <id>
194
- yapi log --interfaceId <id>
107
+ # 创建接口 → 设 Mock → 测试
108
+ yapi interface-create --projectId <id> --catId <cid> --title '用户列表' --path /api/user/list --confirm true
109
+ yapi interface-mock-script --interfaceId <iid> --script 'mockJson = { code: 0, data: [] };' --confirm true
110
+ yapi test-get --url 'https://mock.yapi.example.com/api/user/list'
195
111
  ```
@@ -0,0 +1,93 @@
1
+ # 高级 Mock
2
+
3
+ 高级 Mock 包含两类能力:
4
+
5
+ - **Mock 期望**:按请求参数 / IP 匹配,返回指定的 HTTP Code、Header、Body 和延迟。
6
+ - **自定义 Mock 脚本**:在沙箱中执行 JS,动态修改响应内容。
7
+
8
+ 优先级:Mock 期望 > 自定义 Mock 脚本 > 项目全局 Mock 脚本 > 普通 Mock。
9
+
10
+ ## Mock 期望
11
+
12
+ | 场景 | 命令 | 用法 | 说明 |
13
+ | --- | --- | --- | --- |
14
+ | 列出期望 | `mock-expect-list` | `yapi mock-expect-list --interfaceId <id>` | 看某接口全部期望 |
15
+ | 查看期望 | `mock-expect-get` | `yapi mock-expect-get --caseId <id>` | ObjectId 字符串 |
16
+ | 新增/更新期望 | `mock-expect-save` | `yapi mock-expect-save --interfaceId <id> --projectId <id> --name <name> --resBody <json> [--params <json>] [--ipEnable false] [--ip <ip>] [--code 200] [--delay 0] [--headers <json>] [--caseId <id>] --confirm true` | caseId 存在则更新 |
17
+ | 删除期望 | `mock-expect-delete` | `yapi mock-expect-delete --caseId <id> --confirm true` | 不可恢复 |
18
+ | 启用/禁用期望 | `mock-expect-toggle` | `yapi mock-expect-toggle --caseId <id> --enable true --confirm true` | 快速开关 |
19
+
20
+ ## 自定义 Mock 脚本
21
+
22
+ | 场景 | 命令 | 用法 | 说明 |
23
+ | --- | --- | --- | --- |
24
+ | 获取脚本 | `mock-script-get` | `yapi mock-script-get --interfaceId <id>` | 读高级 Mock 脚本 |
25
+ | 保存脚本 | `mock-script-save` | `yapi mock-script-save --interfaceId <id> --projectId <id> --script <js> [--enable true] --confirm true` | 空字符串可清空 |
26
+
27
+ 脚本沙箱可用变量:
28
+
29
+ - `header` — 请求头
30
+ - `params` — 合并后的 query + body 参数
31
+ - `cookie` — 请求 Cookies
32
+ - `mockJson` — 接口定义的 Mock 模板,可重写
33
+ - `resHeader` — 响应头
34
+ - `httpCode` — 响应状态码
35
+ - `delay` — 响应延迟(毫秒)
36
+ - `Random` — Mock.Random 方法
37
+
38
+ 示例脚本:
39
+
40
+ ```js
41
+ if (params.type == 1) {
42
+ mockJson.errcode = 400;
43
+ mockJson.errmsg = 'error';
44
+ }
45
+
46
+ mockJson = {
47
+ errcode: 0,
48
+ email: Random.email('qq.com'),
49
+ data: [{ city: Random.city() + '银行' }]
50
+ };
51
+ httpCode = 200;
52
+ delay = 500;
53
+ ```
54
+
55
+ ## 说明
56
+
57
+ - 项目级 Mock 脚本(全局)在 `reference/project.md` 中管理:`project-mock-script`。
58
+ - 接口级普通 Mock 脚本在 `reference/interface.md` 中管理:`interface-mock-script`。
59
+ - 本页命令全部走 `/api/plugin/advmock/...`,需要 YApi 启用 `yapi-plugin-advanced-mock` 插件。
60
+
61
+ ## 参数对照
62
+
63
+ | 参数名 | 类型 | 必填 | 说明 |
64
+ |--------|------|------|------|
65
+ | `interfaceId` | number | 是 | 接口 ID |
66
+ | `projectId` | number | save 时必填 | 项目 ID |
67
+ | `caseId` | string | get/delete/toggle/save(更新) | 期望 ID(MongoDB ObjectId) |
68
+ | `name` | string | save | 期望名称 |
69
+ | `resBody` | string | save | 期望返回 Body |
70
+ | `params` | JSON 字符串 | 否 | 请求参数匹配条件 |
71
+ | `ipEnable` | boolean | 否 | 是否启用 IP 过滤 |
72
+ | `ip` | string | ipEnable=true 时必填 | 客户端 IP |
73
+ | `code` | number | 否 | HTTP 状态码,默认 200 |
74
+ | `delay` | number | 否 | 响应延迟,默认 0 |
75
+ | `headers` | JSON 数组字符串 | 否 | 响应头 `[{"name":"X","value":"1"}]` |
76
+ | `script` | string | mock-script-save | JS 脚本,空字符串清空 |
77
+ | `enable` | boolean | 否 | 是否启用脚本/期望 |
78
+ | `confirm` | boolean | 写操作 | 确认执行 |
79
+
80
+ ## 常见链路
81
+
82
+ ```bash
83
+ # 配置高级 Mock 脚本
84
+ yapi mock-script-get --interfaceId <id>
85
+ yapi mock-script-save --interfaceId <id> --projectId <pid> --script '<js>' --confirm true
86
+
87
+ # 添加 Mock 期望
88
+ yapi mock-expect-list --interfaceId <id>
89
+ yapi mock-expect-save --interfaceId <id> --projectId <pid> --name 'success' --resBody '{"code":0}' --params '{"type":"1"}' --confirm true
90
+
91
+ # 开关期望
92
+ yapi mock-expect-toggle --caseId <caseId> --enable false --confirm true
93
+ ```
@@ -6,13 +6,14 @@ yapi-cli 是 YApi 的命令行客户端,基于 InMemoryCliRegistry + Zod schem
6
6
 
7
7
  ```
8
8
  src/
9
- bin/yapi.js — 入口脚本
10
- cli.ts — CLI 运行器(内置命令:help/version/doctor/changelog/completion)
9
+ bin/yapi.ts — 入口脚本
10
+ cli.ts — CLI 运行器(内置命令:help/list/version/install/update/uninstall/remove/doctor/changelog/completion)
11
11
  core/
12
12
  cli-registry.ts — InMemoryCliRegistry(命令注册 + 参数解析)
13
13
  cli-output.ts — 帮助输出渲染
14
14
  errors.ts — CliError 分层错误
15
- output.ts OutputFormatter(pretty / json 双模式)
15
+ manifest.ts 命令清单加载与分组映射
16
+ output.ts — OutputFormatter(pretty / compact / normal / verbose)
16
17
  write-guard.ts — 写保护(YAPI_DISABLE_WRITE + confirm)
17
18
  doctor.ts — 自检命令
18
19
  changelog.ts — 版本变更解析
@@ -20,7 +21,7 @@ src/
20
21
  update-probe.ts — npm 版本探测
21
22
  install.ts — 安装/更新/卸载
22
23
  services/yapi/ — YApi 服务层
23
- api.ts — YApi API 客户端(101 路由端点全覆盖)
24
+ api.ts — YApi API 客户端
24
25
  auth.ts — 认证管理(Token + JWT Cookie + LDAP)
25
26
  config.ts — 配置管理(JSON)
26
27
  cache.ts — 缓存
@@ -28,11 +29,12 @@ src/
28
29
  logger.ts — 日志
29
30
  types.ts — 类型定义
30
31
  tools/yapi/
31
- register.ts — 命令注册组合器
32
+ register.ts — 命令注册组合器 + 分组清单
32
33
  register-auth.ts — 认证/配置命令
33
34
  register-group.ts — 分组命令
34
35
  register-project.ts — 项目命令
35
36
  register-interface.ts — 接口命令
37
+ register-mock.ts — 高级 Mock 命令
36
38
  register-util.ts — 用户/集合/工具命令
37
39
  register-test.ts — 测试命令
38
40
  utils.ts — 工具函数