apifox-mock-generator 1.1.0 → 1.2.0
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.
- package/CHANGELOG.md +53 -3
- package/README.md +124 -55
- package/dist/package.json +1 -1
- package/dist/src/core/apifox-client.d.ts.map +1 -1
- package/dist/src/core/apifox-client.js +12 -12
- package/dist/src/core/apifox-client.js.map +1 -1
- package/dist/src/core/endpoint-filter.d.ts.map +1 -1
- package/dist/src/core/endpoint-filter.js +35 -5
- package/dist/src/core/endpoint-filter.js.map +1 -1
- package/dist/src/core/openapi-converter.d.ts.map +1 -1
- package/dist/src/core/openapi-converter.js +3 -2
- package/dist/src/core/openapi-converter.js.map +1 -1
- package/dist/src/generators/mock-generator.d.ts +2 -2
- package/dist/src/generators/mock-generator.d.ts.map +1 -1
- package/dist/src/generators/mock-generator.js +37 -9
- package/dist/src/generators/mock-generator.js.map +1 -1
- package/dist/src/generators/templates/file-architecture.d.ts +10 -0
- package/dist/src/generators/templates/file-architecture.d.ts.map +1 -0
- package/dist/src/generators/templates/file-architecture.js +18 -0
- package/dist/src/generators/templates/file-architecture.js.map +1 -0
- package/dist/src/generators/templates/mock-template.d.ts +2 -2
- package/dist/src/generators/templates/mock-template.d.ts.map +1 -1
- package/dist/src/generators/templates/mock-template.js +102 -70
- package/dist/src/generators/templates/mock-template.js.map +1 -1
- package/dist/src/generators/templates/type-template.d.ts +2 -18
- package/dist/src/generators/templates/type-template.d.ts.map +1 -1
- package/dist/src/generators/templates/type-template.js +222 -264
- package/dist/src/generators/templates/type-template.js.map +1 -1
- package/dist/src/generators/type-generator.d.ts.map +1 -1
- package/dist/src/generators/type-generator.js +2 -2
- package/dist/src/generators/type-generator.js.map +1 -1
- package/dist/src/types/index.d.ts +3 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/mock/list.d.ts +12 -0
- package/dist/src/types/mock/list.d.ts.map +1 -0
- package/dist/src/types/mock/list.js +4 -0
- package/dist/src/types/mock/list.js.map +1 -0
- package/dist/src/types/mock/test.d.ts +12 -0
- package/dist/src/types/mock/test.d.ts.map +1 -0
- package/dist/src/types/mock/test.js +4 -0
- package/dist/src/types/mock/test.js.map +1 -0
- package/dist/src/types/mock/v1/auth/captcha.d.ts +18 -0
- package/dist/src/types/mock/v1/auth/captcha.d.ts.map +1 -0
- package/dist/src/types/mock/v1/auth/captcha.js +4 -0
- package/dist/src/types/mock/v1/auth/captcha.js.map +1 -0
- package/dist/src/types/mock/v1/auth/login/tenant.d.ts +26 -0
- package/dist/src/types/mock/v1/auth/login/tenant.d.ts.map +1 -0
- package/dist/src/types/mock/v1/auth/login/tenant.js +4 -0
- package/dist/src/types/mock/v1/auth/login/tenant.js.map +1 -0
- package/dist/src/types/mock/v1/auth/login/username.d.ts +40 -0
- package/dist/src/types/mock/v1/auth/login/username.d.ts.map +1 -0
- package/dist/src/types/mock/v1/auth/login/username.js +4 -0
- package/dist/src/types/mock/v1/auth/login/username.js.map +1 -0
- package/dist/src/types/mock/v1/auth/logout.d.ts +12 -0
- package/dist/src/types/mock/v1/auth/logout.d.ts.map +1 -0
- package/dist/src/types/mock/v1/auth/logout.js +4 -0
- package/dist/src/types/mock/v1/auth/logout.js.map +1 -0
- package/dist/src/types/mock/v1/role/list.d.ts +36 -0
- package/dist/src/types/mock/v1/role/list.d.ts.map +1 -0
- package/dist/src/types/mock/v1/role/list.js +4 -0
- package/dist/src/types/mock/v1/role/list.js.map +1 -0
- package/dist/src/types/mock/v1/role/permissions.d.ts +24 -0
- package/dist/src/types/mock/v1/role/permissions.d.ts.map +1 -0
- package/dist/src/types/mock/v1/role/permissions.js +4 -0
- package/dist/src/types/mock/v1/role/permissions.js.map +1 -0
- package/dist/src/types/mock/v1/role.d.ts +91 -0
- package/dist/src/types/mock/v1/role.d.ts.map +1 -0
- package/dist/src/types/mock/v1/role.js +4 -0
- package/dist/src/types/mock/v1/role.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/permissions.d.ts +33 -0
- package/dist/src/types/mock/v1/tenant/permissions.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/permissions.js +4 -0
- package/dist/src/types/mock/v1/tenant/permissions.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/disabled.d.ts +24 -0
- package/dist/src/types/mock/v1/tenant/user/disabled.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/disabled.js +4 -0
- package/dist/src/types/mock/v1/tenant/user/disabled.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/list.d.ts +46 -0
- package/dist/src/types/mock/v1/tenant/user/list.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/list.js +4 -0
- package/dist/src/types/mock/v1/tenant/user/list.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/role.d.ts +24 -0
- package/dist/src/types/mock/v1/tenant/user/role.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/role.js +4 -0
- package/dist/src/types/mock/v1/tenant/user/role.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/unlink.d.ts +12 -0
- package/dist/src/types/mock/v1/tenant/user/unlink.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/unlink.js +4 -0
- package/dist/src/types/mock/v1/tenant/user/unlink.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user.d.ts +36 -0
- package/dist/src/types/mock/v1/tenant/user.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user.js +4 -0
- package/dist/src/types/mock/v1/tenant/user.js.map +1 -0
- package/dist/src/types/mock/v1/user/avatar.d.ts +22 -0
- package/dist/src/types/mock/v1/user/avatar.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/avatar.js +4 -0
- package/dist/src/types/mock/v1/user/avatar.js.map +1 -0
- package/dist/src/types/mock/v1/user/info.d.ts +36 -0
- package/dist/src/types/mock/v1/user/info.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/info.js +4 -0
- package/dist/src/types/mock/v1/user/info.js.map +1 -0
- package/dist/src/types/mock/v1/user/password.d.ts +24 -0
- package/dist/src/types/mock/v1/user/password.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/password.js +4 -0
- package/dist/src/types/mock/v1/user/password.js.map +1 -0
- package/dist/src/types/mock/v1/user/permissions.d.ts +33 -0
- package/dist/src/types/mock/v1/user/permissions.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/permissions.js +4 -0
- package/dist/src/types/mock/v1/user/permissions.js.map +1 -0
- package/dist/src/types/mock/v1/user/self.d.ts +22 -0
- package/dist/src/types/mock/v1/user/self.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/self.js +4 -0
- package/dist/src/types/mock/v1/user/self.js.map +1 -0
- package/dist/src/types/mock/v1/user.d.ts +34 -0
- package/dist/src/types/mock/v1/user.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user.js +4 -0
- package/dist/src/types/mock/v1/user.js.map +1 -0
- package/dist/src/utils/code-formatter.js +1 -1
- package/dist/src/utils/code-formatter.js.map +1 -1
- package/package.json +60 -60
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,56 @@
|
|
|
5
5
|
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
6
|
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
7
|
|
|
8
|
+
## [1.1.1] - 2025-01-27
|
|
9
|
+
|
|
10
|
+
### 🎯 核心功能改进
|
|
11
|
+
|
|
12
|
+
#### 🏗️ Mock 文件架构优化
|
|
13
|
+
|
|
14
|
+
- **新增文件架构管理** - 引入 `file-architecture.ts` 模块,统一管理 Mock 文件的基础结构
|
|
15
|
+
- **两步生成模式** - Mock 文件生成改为两步模式:先确保文件架构,后生成接口内容
|
|
16
|
+
- **智能架构检测** - 自动检测现有文件是否包含必要的 import 语句,避免重复添加
|
|
17
|
+
- **增量架构更新** - 对于已存在的文件,智能添加缺失的基础架构而不覆盖现有内容
|
|
18
|
+
|
|
19
|
+
#### 🔧 代码质量提升
|
|
20
|
+
|
|
21
|
+
- **代码格式化优化** - 改进 `code-formatter.ts`,使用 Prettier 自动格式化生成的代码
|
|
22
|
+
- **统一代码风格** - 所有生成的 Mock 文件都遵循统一的代码风格和格式
|
|
23
|
+
- **更好的可读性** - 生成的代码更加整洁,便于维护和调试
|
|
24
|
+
|
|
25
|
+
#### 📊 类型系统增强
|
|
26
|
+
|
|
27
|
+
- **接口状态支持** - 在 `ApiEndpoint` 类型中新增 `status` 字段,支持接口状态管理
|
|
28
|
+
- **更精确的类型定义** - 优化类型注释,提供更清晰的 API 文档
|
|
29
|
+
- **废弃配置优化** - 改进 `excludedByTags` 的注释说明,明确其用于排除接口状态
|
|
30
|
+
|
|
31
|
+
### 🚀 技术改进
|
|
32
|
+
|
|
33
|
+
#### 📁 文件管理优化
|
|
34
|
+
|
|
35
|
+
- **目录结构自动创建** - 生成 Mock 文件时自动创建必要的目录结构
|
|
36
|
+
- **文件存在性检查** - 增强文件存在性检查,避免文件操作错误
|
|
37
|
+
- **架构完整性保证** - 确保每个 Mock 文件都包含必要的 import 语句和基础设置
|
|
38
|
+
|
|
39
|
+
#### 🎨 代码生成改进
|
|
40
|
+
|
|
41
|
+
- **模块化架构** - 将文件架构管理独立为单独模块,提高代码复用性
|
|
42
|
+
- **更好的错误处理** - 改进文件操作过程中的错误处理和日志输出
|
|
43
|
+
- **增量更新支持** - 支持在现有文件中增量添加新的接口定义
|
|
44
|
+
|
|
45
|
+
### 📖 文档更新
|
|
46
|
+
|
|
47
|
+
### 📋 执行前提条件
|
|
48
|
+
|
|
49
|
+
执行 `node dist/src/scripts/serve-mock.js` 需要满足以下条件:
|
|
50
|
+
|
|
51
|
+
3. **配置文件存在** - 确保 `apifox.config.json` 在项目根目录
|
|
52
|
+
4. **Mock 文件已生成** - 先运行 `npm run generate` 生成 Mock 文件
|
|
53
|
+
5. **Mock 目录存在** - 确保 `mock/` 目录存在且包含有效的 Mock 文件
|
|
54
|
+
6. **端口可用** - 确保配置的 `mockPort` 端口未被占用
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
8
58
|
## [1.1.0] - 2025-10-13
|
|
9
59
|
|
|
10
60
|
### 🎯 核心功能
|
|
@@ -25,6 +75,7 @@
|
|
|
25
75
|
- **自动应用** - 启用 `includeApifoxExtensionProperties` 后自动拉取和应用规则
|
|
26
76
|
|
|
27
77
|
支持的 Apifox 模板转换:
|
|
78
|
+
|
|
28
79
|
- `{{$string.uuid}}` → `@guid`
|
|
29
80
|
- `{{$person.fullName(locale='zh_CN')}}` → `@cname`
|
|
30
81
|
- `{{$internet.email}}` → `@email`
|
|
@@ -71,8 +122,8 @@ Mock 规则: @email
|
|
|
71
122
|
|
|
72
123
|
```javascript
|
|
73
124
|
Mock.mock({
|
|
74
|
-
email: '@email'
|
|
75
|
-
})
|
|
125
|
+
email: '@email' // 直接使用 Apifox 配置的规则
|
|
126
|
+
});
|
|
76
127
|
```
|
|
77
128
|
|
|
78
129
|
### ⚡ 兼容性
|
|
@@ -206,4 +257,3 @@ Mock.mock({
|
|
|
206
257
|
## 许可证
|
|
207
258
|
|
|
208
259
|
MIT License - 详见 [LICENSE](./LICENSE) 文件
|
|
209
|
-
|
package/README.md
CHANGED
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
## ✨ 功能特性
|
|
17
17
|
|
|
18
18
|
### 核心功能
|
|
19
|
+
|
|
19
20
|
- 🚀 **Apifox 集成** - 自动从 Apifox 项目拉取 API 接口定义(支持 OpenAPI 3.0)
|
|
20
21
|
- 📝 **类型生成** - 生成 TypeScript 类型文件(.ts 格式),支持复杂类型、嵌套对象、枚举等
|
|
21
22
|
- 🎭 **Apifox Mock** - **✨ 直接使用 Apifox 的 mock 规则**,无需本地配置,完全继承 Apifox 的数据生成能力
|
|
22
23
|
- 🌐 **Mock 服务器** - 基于 Express 的本地 Mock 服务,快速响应,支持 CORS
|
|
23
24
|
|
|
24
25
|
### 高级特性
|
|
26
|
+
|
|
25
27
|
- 🔥 **热重载** - 修改 Mock 文件自动生效,无需重启服务器
|
|
26
28
|
- 🎯 **API 筛选** - 支持路径、方法、标签、操作 ID 等多维度筛选
|
|
27
29
|
- ⚡ **增量更新** - 智能识别文件变化,仅更新必要内容
|
|
@@ -39,6 +41,15 @@ pnpm add apifox-mock-generator -D
|
|
|
39
41
|
|
|
40
42
|
## 🚀 快速开始
|
|
41
43
|
|
|
44
|
+
### 前置条件
|
|
45
|
+
|
|
46
|
+
在开始使用之前,请确保满足以下条件:
|
|
47
|
+
|
|
48
|
+
- ✅ **Node.js 16+** - 确保已安装 Node.js 16 或更高版本
|
|
49
|
+
- ✅ **项目编译** - 运行 `npm run build` 编译 TypeScript 代码
|
|
50
|
+
- ✅ **Apifox 配置** - 创建 `apifox.config.json` 配置文件
|
|
51
|
+
- ✅ **Mock 文件生成** - 运行 `npm run generate` 生成 Mock 文件
|
|
52
|
+
|
|
42
53
|
### 1. 创建配置文件
|
|
43
54
|
|
|
44
55
|
在你的项目根目录创建 `apifox.config.json`:
|
|
@@ -53,7 +64,6 @@ pnpm add apifox-mock-generator -D
|
|
|
53
64
|
}
|
|
54
65
|
```
|
|
55
66
|
|
|
56
|
-
|
|
57
67
|
### 2. 配置 package.json 脚本
|
|
58
68
|
|
|
59
69
|
```json
|
|
@@ -78,6 +88,12 @@ npm run mock:generate
|
|
|
78
88
|
npm run mock:serve
|
|
79
89
|
```
|
|
80
90
|
|
|
91
|
+
> ⚠️ **执行前提条件**:
|
|
92
|
+
>
|
|
93
|
+
> - 必须先运行 `npm run generate` 生成 Mock 文件
|
|
94
|
+
> - 确保 `apifox.config.json` 配置文件存在且配置正确
|
|
95
|
+
> - 确保 `mock/` 对应项目根目录存在且包含有效的 Mock 文件
|
|
96
|
+
|
|
81
97
|
### 5. 配置代理(Vite 项目)
|
|
82
98
|
|
|
83
99
|
在 `vite.config.ts` 中:
|
|
@@ -92,21 +108,21 @@ export default defineConfig({
|
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
110
|
}
|
|
95
|
-
})
|
|
111
|
+
});
|
|
96
112
|
```
|
|
97
113
|
|
|
98
114
|
### 6. 使用生成的类型
|
|
99
115
|
|
|
100
116
|
```typescript
|
|
101
|
-
import type { LoginRequest, LoginResponse } from './src/types/api/auth/login'
|
|
117
|
+
import type { LoginRequest, LoginResponse } from './src/types/api/auth/login';
|
|
102
118
|
|
|
103
119
|
const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
104
120
|
const response = await fetch('/api/auth/login', {
|
|
105
121
|
method: 'POST',
|
|
106
122
|
body: JSON.stringify(data)
|
|
107
|
-
})
|
|
108
|
-
return response.json()
|
|
109
|
-
}
|
|
123
|
+
});
|
|
124
|
+
return response.json();
|
|
125
|
+
};
|
|
110
126
|
```
|
|
111
127
|
|
|
112
128
|
## 🔧 配置说明
|
|
@@ -137,7 +153,7 @@ const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
|
137
153
|
"apiFilter": {
|
|
138
154
|
"scope": {
|
|
139
155
|
"type": "ALL",
|
|
140
|
-
"excludedByTags": ["
|
|
156
|
+
"excludedByTags": ["设计中", "已废弃"]
|
|
141
157
|
},
|
|
142
158
|
"includePaths": ["/api/auth/**", "/api/user/**"],
|
|
143
159
|
"excludePaths": ["/api/admin/**"],
|
|
@@ -151,33 +167,48 @@ const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
|
151
167
|
|
|
152
168
|
**`scope` 配置** - 控制从 Apifox 导出哪些接口:
|
|
153
169
|
|
|
154
|
-
| 参数
|
|
155
|
-
|
|
156
|
-
| `type`
|
|
157
|
-
| `includedByTags` | `string[]`
|
|
158
|
-
| `excludedByTags` | `string[]`
|
|
159
|
-
| `folderPath`
|
|
160
|
-
| `apiIdList`
|
|
170
|
+
| 参数 | 类型 | 说明 |
|
|
171
|
+
| ---------------- | ------------------------------------------ | --------------------------------------------------------- |
|
|
172
|
+
| `type` | `'ALL' \| 'FOLDER' \| 'TAG' \| 'API_LIST'` | 导出类型:全部/按文件夹/按标签/按 API ID |
|
|
173
|
+
| `includedByTags` | `string[]` | 包含的标签 |
|
|
174
|
+
| `excludedByTags` | `string[]` | 排除的接口状态(支持中文:`设计中`、`已废弃`、`待定` 等) |
|
|
175
|
+
| `folderPath` | `string` | 文件夹路径(type 为 FOLDER 时) |
|
|
176
|
+
| `apiIdList` | `string[]` | API ID 列表(type 为 API_LIST 时) |
|
|
161
177
|
|
|
162
178
|
> 📝 **注意**: 系统默认启用 Apifox 扩展属性和文件夹标签功能,无需额外配置。
|
|
163
179
|
|
|
180
|
+
#### 接口状态映射
|
|
181
|
+
|
|
182
|
+
`excludedByTags` 支持中文状态配置,系统会自动映射到 Apifox 的英文状态:
|
|
183
|
+
|
|
184
|
+
| 中文状态 | 英文状态 | 说明 |
|
|
185
|
+
| -------- | ------------ | -------------- |
|
|
186
|
+
| `设计中` | `designing` | 接口正在设计中 |
|
|
187
|
+
| `开发中` | `developing` | 接口正在开发中 |
|
|
188
|
+
| `已完成` | `completed` | 接口开发完成 |
|
|
189
|
+
| `已废弃` | `deprecated` | 接口已废弃 |
|
|
190
|
+
| `待定` | `pending` | 接口状态待定 |
|
|
191
|
+
| `测试中` | `testing` | 接口正在测试 |
|
|
192
|
+
| `已发布` | `published` | 接口已发布 |
|
|
193
|
+
|
|
164
194
|
#### 客户端过滤(生成时)
|
|
165
195
|
|
|
166
196
|
在生成 Mock 和类型文件时进行二次过滤:
|
|
167
197
|
|
|
168
|
-
| 参数
|
|
169
|
-
|
|
170
|
-
| `includePaths`
|
|
171
|
-
| `excludePaths`
|
|
172
|
-
| `includeOperationIds` | `string[]` | 只包含这些 operationId
|
|
173
|
-
| `excludeOperationIds` | `string[]` | 排除这些 operationId
|
|
174
|
-
| `excludeDeprecated`
|
|
175
|
-
| `includeMethods`
|
|
176
|
-
| `excludeMethods`
|
|
198
|
+
| 参数 | 类型 | 说明 |
|
|
199
|
+
| --------------------- | ---------- | ----------------------------------------- |
|
|
200
|
+
| `includePaths` | `string[]` | 只包含这些路径(支持 `*` 和 `**` 通配符) |
|
|
201
|
+
| `excludePaths` | `string[]` | 排除这些路径 |
|
|
202
|
+
| `includeOperationIds` | `string[]` | 只包含这些 operationId |
|
|
203
|
+
| `excludeOperationIds` | `string[]` | 排除这些 operationId |
|
|
204
|
+
| `excludeDeprecated` | `boolean` | 排除废弃的接口 |
|
|
205
|
+
| `includeMethods` | `string[]` | 只包含这些 HTTP 方法 |
|
|
206
|
+
| `excludeMethods` | `string[]` | 排除这些 HTTP 方法 |
|
|
177
207
|
|
|
178
208
|
#### 常用场景
|
|
179
209
|
|
|
180
210
|
**场景 1:导出所有接口,排除已废弃**
|
|
211
|
+
|
|
181
212
|
```json
|
|
182
213
|
{
|
|
183
214
|
"apiFilter": {
|
|
@@ -190,6 +221,7 @@ const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
|
190
221
|
```
|
|
191
222
|
|
|
192
223
|
**场景 2:只导出指定文件夹**
|
|
224
|
+
|
|
193
225
|
```json
|
|
194
226
|
{
|
|
195
227
|
"apiFilter": {
|
|
@@ -202,6 +234,7 @@ const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
|
202
234
|
```
|
|
203
235
|
|
|
204
236
|
**场景 3:按标签导出**
|
|
237
|
+
|
|
205
238
|
```json
|
|
206
239
|
{
|
|
207
240
|
"apiFilter": {
|
|
@@ -214,6 +247,7 @@ const login = async (data: LoginRequest): Promise<LoginResponse> => {
|
|
|
214
247
|
```
|
|
215
248
|
|
|
216
249
|
**场景 4:服务端 + 客户端双重过滤**
|
|
250
|
+
|
|
217
251
|
```json
|
|
218
252
|
{
|
|
219
253
|
"apiFilter": {
|
|
@@ -292,13 +326,13 @@ Mock 规则: @integer(0, 999) ← Mock.js 语法
|
|
|
292
326
|
|
|
293
327
|
```javascript
|
|
294
328
|
Mock.mock({
|
|
295
|
-
code: '@integer(0, 999)',
|
|
329
|
+
code: '@integer(0, 999)', // 直接使用 Mock.js 规则
|
|
296
330
|
data: {
|
|
297
|
-
id: '@guid',
|
|
298
|
-
name: '@cname',
|
|
299
|
-
email: '@email'
|
|
331
|
+
id: '@guid', // {{$string.uuid}} → @guid
|
|
332
|
+
name: '@cname', // {{$person.fullName(locale='zh_CN')}} → @cname
|
|
333
|
+
email: '@email' // 直接使用 Mock.js 规则
|
|
300
334
|
}
|
|
301
|
-
})
|
|
335
|
+
});
|
|
302
336
|
```
|
|
303
337
|
|
|
304
338
|
#### 优势
|
|
@@ -328,11 +362,11 @@ export default {
|
|
|
328
362
|
code: 0,
|
|
329
363
|
message: 'success',
|
|
330
364
|
data: {
|
|
331
|
-
token: 'custom-token-12345',
|
|
365
|
+
token: 'custom-token-12345', // 自定义数据
|
|
332
366
|
userId: 10086
|
|
333
367
|
}
|
|
334
368
|
}
|
|
335
|
-
}
|
|
369
|
+
};
|
|
336
370
|
```
|
|
337
371
|
|
|
338
372
|
> ⚠️ 注意:重新运行 `apifox-mock generate` 会覆盖自定义的修改
|
|
@@ -413,6 +447,7 @@ npm run mock:generate
|
|
|
413
447
|
```
|
|
414
448
|
|
|
415
449
|
执行过程:
|
|
450
|
+
|
|
416
451
|
- 从 Apifox 拉取 API 定义
|
|
417
452
|
- 应用筛选规则
|
|
418
453
|
- 生成 TypeScript 类型 → `src/types/api/`
|
|
@@ -439,20 +474,20 @@ export default defineConfig({
|
|
|
439
474
|
}
|
|
440
475
|
}
|
|
441
476
|
}
|
|
442
|
-
})
|
|
477
|
+
});
|
|
443
478
|
```
|
|
444
479
|
|
|
445
480
|
#### 5️⃣ 在代码中使用
|
|
446
481
|
|
|
447
482
|
```typescript
|
|
448
483
|
// 导入类型
|
|
449
|
-
import type { LoginRequest, LoginResponse } from '@/types/api/auth/login'
|
|
484
|
+
import type { LoginRequest, LoginResponse } from '@/types/api/auth/login';
|
|
450
485
|
|
|
451
486
|
// 发起请求(自动代理到 Mock 服务器)
|
|
452
487
|
const response = await fetch('/api/auth/login', {
|
|
453
488
|
method: 'POST',
|
|
454
489
|
body: JSON.stringify(data)
|
|
455
|
-
})
|
|
490
|
+
});
|
|
456
491
|
```
|
|
457
492
|
|
|
458
493
|
### 项目结构
|
|
@@ -540,23 +575,23 @@ apifox-mock-generator/
|
|
|
540
575
|
|
|
541
576
|
项目采用**模块化分层架构**,职责清晰分离:
|
|
542
577
|
|
|
543
|
-
| 层级
|
|
544
|
-
|
|
545
|
-
| **核心层** | `core/`
|
|
546
|
-
| **生成层** | `generators/` | Mock 和 TypeScript 类型生成、代码模板
|
|
547
|
-
| **服务层** | `server/`
|
|
548
|
-
| **工具层** | `utils/`
|
|
549
|
-
| **脚本层** | `scripts/`
|
|
550
|
-
| **类型层** | `types/`
|
|
578
|
+
| 层级 | 目录 | 职责 |
|
|
579
|
+
| ---------- | ------------- | --------------------------------------------- |
|
|
580
|
+
| **核心层** | `core/` | Apifox API 交互、配置加载、OpenAPI 转换和过滤 |
|
|
581
|
+
| **生成层** | `generators/` | Mock 和 TypeScript 类型生成、代码模板 |
|
|
582
|
+
| **服务层** | `server/` | Express 服务器、动态路由、热重载、参数校验 |
|
|
583
|
+
| **工具层** | `utils/` | 文件操作、增量更新、代码格式化、日志输出 |
|
|
584
|
+
| **脚本层** | `scripts/` | CLI 命令入口(generate、serve) |
|
|
585
|
+
| **类型层** | `types/` | 公共 TypeScript 类型定义 |
|
|
551
586
|
|
|
552
587
|
## 🛠️ 脚本说明
|
|
553
588
|
|
|
554
|
-
| 命令
|
|
555
|
-
|
|
556
|
-
| `npm run build`
|
|
589
|
+
| 命令 | 说明 |
|
|
590
|
+
| ------------------ | ------------------------------------------- |
|
|
591
|
+
| `npm run build` | 编译 TypeScript 代码 |
|
|
557
592
|
| `npm run generate` | 一键生成(拉取 API + 生成 Mock + 生成类型) |
|
|
558
|
-
| `npm run serve`
|
|
559
|
-
| `npm run dev`
|
|
593
|
+
| `npm run serve` | 启动 Mock 服务器 |
|
|
594
|
+
| `npm run dev` | 开发模式(generate + serve) |
|
|
560
595
|
|
|
561
596
|
## 📚 技术栈
|
|
562
597
|
|
|
@@ -584,6 +619,7 @@ apifox-mock-generator/
|
|
|
584
619
|
### 1. 拉取 API 失败?
|
|
585
620
|
|
|
586
621
|
检查:
|
|
622
|
+
|
|
587
623
|
- `projectId` 和 `token` 是否正确
|
|
588
624
|
- Token 是否有「项目维护者」或「管理员」权限
|
|
589
625
|
- 网络连接是否正常
|
|
@@ -595,6 +631,7 @@ apifox-mock-generator/
|
|
|
595
631
|
### 3. 没有生成任何文件?
|
|
596
632
|
|
|
597
633
|
检查:
|
|
634
|
+
|
|
598
635
|
- `apiFilter` 筛选规则是否过于严格
|
|
599
636
|
- Apifox 项目中是否有匹配的接口
|
|
600
637
|
- 查看终端输出的错误信息
|
|
@@ -603,6 +640,7 @@ apifox-mock-generator/
|
|
|
603
640
|
### 4. 类型生成不准确?
|
|
604
641
|
|
|
605
642
|
建议:
|
|
643
|
+
|
|
606
644
|
- 在 Apifox 中完善接口的数据模型定义
|
|
607
645
|
- 使用 JSON Schema 定义清晰的数据结构
|
|
608
646
|
- 为每个字段添加描述和示例
|
|
@@ -610,10 +648,36 @@ apifox-mock-generator/
|
|
|
610
648
|
### 5. 热重载不生效?
|
|
611
649
|
|
|
612
650
|
确认:
|
|
651
|
+
|
|
613
652
|
- Mock 文件保存成功
|
|
614
653
|
- 查看终端是否有文件变化的提示
|
|
615
654
|
- 检查文件路径是否在 `mockDir` 配置的目录下
|
|
616
655
|
|
|
656
|
+
### 6. 启动 Mock 服务器失败?
|
|
657
|
+
|
|
658
|
+
检查以下条件:
|
|
659
|
+
|
|
660
|
+
- ✅ **配置文件存在** - 确保 `apifox.config.json` 在项目根目录
|
|
661
|
+
- ✅ **Mock 目录存在** - 确保 `mock/` 目录存在且不为空
|
|
662
|
+
- ✅ **项目已编译** - 运行 `npm run build` 编译代码
|
|
663
|
+
- ✅ **Mock 文件已生成** - 先运行 `npm run generate` 生成 Mock 文件
|
|
664
|
+
- ✅ **端口未被占用** - 检查 `mockPort` 配置的端口是否可用
|
|
665
|
+
|
|
666
|
+
常见错误及解决方案:
|
|
667
|
+
|
|
668
|
+
```bash
|
|
669
|
+
# 错误:未找到 apifox.config.json 配置文件
|
|
670
|
+
# 解决:创建配置文件
|
|
671
|
+
cp apifox.config.json.example apifox.config.json
|
|
672
|
+
|
|
673
|
+
# 错误:未找到 Mock 目录
|
|
674
|
+
# 解决:先生成 Mock 文件
|
|
675
|
+
npm run generate
|
|
676
|
+
|
|
677
|
+
# 错误:未找到任何 Mock 文件
|
|
678
|
+
# 解决:检查 API 筛选配置,确保有匹配的接口
|
|
679
|
+
```
|
|
680
|
+
|
|
617
681
|
## 🤝 不同框架的配置示例
|
|
618
682
|
|
|
619
683
|
### Vue CLI 项目
|
|
@@ -629,7 +693,7 @@ module.exports = {
|
|
|
629
693
|
}
|
|
630
694
|
}
|
|
631
695
|
}
|
|
632
|
-
}
|
|
696
|
+
};
|
|
633
697
|
```
|
|
634
698
|
|
|
635
699
|
### React (Create React App)
|
|
@@ -647,7 +711,7 @@ module.exports = {
|
|
|
647
711
|
// src/setupProxy.js
|
|
648
712
|
const { createProxyMiddleware } = require('http-proxy-middleware');
|
|
649
713
|
|
|
650
|
-
module.exports = function(app) {
|
|
714
|
+
module.exports = function (app) {
|
|
651
715
|
app.use(
|
|
652
716
|
'/api',
|
|
653
717
|
createProxyMiddleware({
|
|
@@ -691,34 +755,38 @@ mock/
|
|
|
691
755
|
|
|
692
756
|
### 💡 最佳实践
|
|
693
757
|
|
|
694
|
-
| 场景
|
|
695
|
-
|
|
696
|
-
| **配置文件**
|
|
697
|
-
| **类型文件**
|
|
698
|
-
| **Mock 数据** | 可以不提交,每个开发者自行生成
|
|
699
|
-
| **切换环境**
|
|
758
|
+
| 场景 | 建议 |
|
|
759
|
+
| ------------- | --------------------------------------------------- |
|
|
760
|
+
| **配置文件** | `apifox.config.json` 不要提交,提供 `.example` 示例 |
|
|
761
|
+
| **类型文件** | 建议提交到 Git,团队共享类型定义 |
|
|
762
|
+
| **Mock 数据** | 可以不提交,每个开发者自行生成 |
|
|
763
|
+
| **切换环境** | 后端完成后只需修改代理配置,代码无需改动 |
|
|
700
764
|
|
|
701
765
|
## 📝 更新日志
|
|
702
766
|
|
|
703
767
|
### v1.1.0 (2025-10-13)
|
|
704
768
|
|
|
705
769
|
#### 🎯 核心功能
|
|
770
|
+
|
|
706
771
|
- 🎭 **直接使用 Apifox Mock 规则** - 使用 Apifox 中配置的 mock 规则,本地与云端保持完全一致
|
|
707
772
|
- 🔄 **统一管理** - Mock 规则在 Apifox 平台统一管理,团队协作更方便
|
|
708
773
|
|
|
709
774
|
#### ✨ 新功能
|
|
775
|
+
|
|
710
776
|
- ✅ 支持 Apifox 的 `x-apifox-mock` 扩展字段,提取 mock 规则
|
|
711
777
|
- ✅ 智能转换 Apifox 模板语法(`{{$xxx}}`)为 Mock.js 语法(`@xxx`)
|
|
712
778
|
- ✅ 同时支持 Mock.js 和 Apifox 两种语法
|
|
713
779
|
- ✅ 完善的回退策略(示例值 → 枚举值 → 基本规则)
|
|
714
780
|
|
|
715
781
|
#### 📖 文档更新
|
|
782
|
+
|
|
716
783
|
- 新增"Apifox Mock 规则"章节,说明使用方法
|
|
717
784
|
- 更新项目结构说明
|
|
718
785
|
|
|
719
786
|
### v1.0.0 (2025-10-10)
|
|
720
787
|
|
|
721
788
|
#### 核心功能
|
|
789
|
+
|
|
722
790
|
- 🚀 **Apifox API 客户端** - 从 Apifox 项目拉取 API 接口定义
|
|
723
791
|
- 📝 **类型生成器** - 自动生成 TypeScript 类型文件(.ts 格式)
|
|
724
792
|
- 🎭 **Mock 生成器** - 基于 Schema 自动生成 Mock 数据文件
|
|
@@ -726,6 +794,7 @@ mock/
|
|
|
726
794
|
- 🔥 **热重载** - 修改 Mock 文件自动生效,无需重启服务器
|
|
727
795
|
|
|
728
796
|
#### 高级特性
|
|
797
|
+
|
|
729
798
|
- 🎯 **API 筛选** - 支持路径、方法、标签、操作 ID 等多维度筛选
|
|
730
799
|
- ⚡ **增量更新** - 智能识别文件变化,仅更新必要的内容
|
|
731
800
|
- 🎨 **代码格式化** - 使用 Prettier 格式化生成的代码
|
|
@@ -734,6 +803,7 @@ mock/
|
|
|
734
803
|
- ✅ **参数校验** - 基于 Schema 的请求参数验证
|
|
735
804
|
|
|
736
805
|
#### 支持的特性
|
|
806
|
+
|
|
737
807
|
- ✅ OpenAPI 3.0 规范
|
|
738
808
|
- ✅ HTTP 方法:GET、POST、PUT、DELETE、PATCH
|
|
739
809
|
- ✅ 路径参数、查询参数、请求体、响应体
|
|
@@ -848,4 +918,3 @@ copies or substantial portions of the Software.
|
|
|
848
918
|
如有问题或建议,欢迎提 [Issue](https://github.com/yourname/apifox-mock-generator/issues)!
|
|
849
919
|
|
|
850
920
|
⭐ 如果这个项目对你有帮助,请给一个 Star!
|
|
851
|
-
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apifox-client.d.ts","sourceRoot":"","sources":["../../../src/core/apifox-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;GAEG;AACH,wBAAsB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"apifox-client.d.ts","sourceRoot":"","sources":["../../../src/core/apifox-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,CA8Bd"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import https from 'https';
|
|
2
|
+
import * as https from 'https';
|
|
3
3
|
import { logger } from '../utils/logger.js';
|
|
4
4
|
/**
|
|
5
5
|
* 从 Apifox 拉取 OpenAPI 数据
|
|
@@ -12,14 +12,14 @@ export async function fetchOpenAPIFromApifox(config) {
|
|
|
12
12
|
const requestBody = buildRequestBody(config);
|
|
13
13
|
const response = await axios.post(apiUrl, requestBody, {
|
|
14
14
|
headers: {
|
|
15
|
-
|
|
15
|
+
Authorization: `Bearer ${config.token}`,
|
|
16
16
|
'Content-Type': 'application/json',
|
|
17
|
-
'X-Apifox-Api-Version': '2024-03-28'
|
|
17
|
+
'X-Apifox-Api-Version': '2024-03-28',
|
|
18
18
|
},
|
|
19
19
|
httpsAgent: new https.Agent({
|
|
20
|
-
rejectUnauthorized: false
|
|
20
|
+
rejectUnauthorized: false,
|
|
21
21
|
}),
|
|
22
|
-
timeout: 30000
|
|
22
|
+
timeout: 30000,
|
|
23
23
|
});
|
|
24
24
|
logger.success(`✓ 从 Apifox 拉取成功(${Object.keys(response.data.paths || {}).length} 个接口)`);
|
|
25
25
|
return response.data;
|
|
@@ -35,7 +35,7 @@ export async function fetchOpenAPIFromApifox(config) {
|
|
|
35
35
|
function buildRequestBody(config) {
|
|
36
36
|
const requestBody = {
|
|
37
37
|
oasVersion: '3.0',
|
|
38
|
-
exportFormat: 'JSON'
|
|
38
|
+
exportFormat: 'JSON',
|
|
39
39
|
};
|
|
40
40
|
// 应用服务端过滤配置
|
|
41
41
|
if (config.apiFilter) {
|
|
@@ -44,16 +44,16 @@ function buildRequestBody(config) {
|
|
|
44
44
|
if (config.apiFilter.scope.type) {
|
|
45
45
|
scope.type = config.apiFilter.scope.type;
|
|
46
46
|
}
|
|
47
|
-
if (config.apiFilter.scope.includedByTags &&
|
|
47
|
+
if (config.apiFilter.scope.includedByTags &&
|
|
48
|
+
config.apiFilter.scope.includedByTags.length > 0) {
|
|
48
49
|
scope.includedByTags = config.apiFilter.scope.includedByTags;
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
scope.excludedByTags = config.apiFilter.scope.excludedByTags;
|
|
52
|
-
}
|
|
51
|
+
// excludedByTags 现在是客户端过滤,不再发送到服务端
|
|
53
52
|
if (config.apiFilter.scope.folderPath) {
|
|
54
53
|
scope.folderPath = config.apiFilter.scope.folderPath;
|
|
55
54
|
}
|
|
56
|
-
if (config.apiFilter.scope.apiIdList &&
|
|
55
|
+
if (config.apiFilter.scope.apiIdList &&
|
|
56
|
+
config.apiFilter.scope.apiIdList.length > 0) {
|
|
57
57
|
scope.apiIdList = config.apiFilter.scope.apiIdList;
|
|
58
58
|
}
|
|
59
59
|
if (Object.keys(scope).length > 0) {
|
|
@@ -63,7 +63,7 @@ function buildRequestBody(config) {
|
|
|
63
63
|
// 始终启用 Apifox 扩展属性和文件夹标签(写死为 true)
|
|
64
64
|
requestBody.options = {
|
|
65
65
|
includeApifoxExtensionProperties: true,
|
|
66
|
-
addFoldersToTags: true
|
|
66
|
+
addFoldersToTags: true,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
return requestBody;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apifox-client.js","sourceRoot":"","sources":["../../../src/core/apifox-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"apifox-client.js","sourceRoot":"","sources":["../../../src/core/apifox-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-filter.d.ts","sourceRoot":"","sources":["../../../src/core/endpoint-filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"endpoint-filter.d.ts","sourceRoot":"","sources":["../../../src/core/endpoint-filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAsB/D;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,WAAW,EAAE,EACxB,MAAM,CAAC,EAAE,SAAS,GACjB,WAAW,EAAE,CAgGf"}
|