mock-service-cli 3.3.6 → 3.5.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/README.md +175 -211
- package/bin/mock-service-cli +26 -2
- package/lib/api-overview.html +684 -0
- package/lib/file-explorer.html +945 -0
- package/lib/fileExplorerServer.js +278 -0
- package/lib/mockServer.js +81 -1
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -1,280 +1,244 @@
|
|
|
1
1
|
[](https://github.com/chandq/mock-service-cli/actions/workflows/node.js.yml)
|
|
2
2
|
[](https://coveralls.io/github/chandq/mock-service-cli?branch=master)
|
|
3
|
-
[](https://
|
|
3
|
+
[](https://www.npmjs.com/package/mock-service-cli)
|
|
4
4
|
[](https://nodejs.org/download/release/v12.0.0/)
|
|
5
5
|
[](https://github.com/chandq/mock-service-cli/blob/master/LICENSE.md)
|
|
6
|
-
[](https://npmcharts.com/compare/mock-service-cli?minimal=true)
|
|
7
6
|
|
|
8
|
-
# 🦅
|
|
7
|
+
# 🦅 mock-service-cli
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
一个基于 Node.js 和 Express 的轻量级 Mock 套件命令行工具,提供本地开发调试所需的各种服务器功能。
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
## ✨ 核心功能
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
- **Mock Server** - 本地 Mock 服务器,支持热更新和多种请求方法
|
|
14
|
+
- **Static Server** - 静态资源服务器
|
|
15
|
+
- **SPA Server** - 单页应用服务器(模拟生产环境)
|
|
16
|
+
- **HTTP Proxy** - 本地接口代理服务
|
|
17
|
+
- **API Overview** - 现代化的 API 概览页面
|
|
18
|
+
- **File Explorer** - 现代化的文件浏览器
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
## 🚀 特性
|
|
17
21
|
|
|
18
|
-
- 支持统计 mock
|
|
19
|
-
- 支持终端打开 mock
|
|
22
|
+
- 📊 支持统计 mock 文件数量和请求数量
|
|
23
|
+
- 🔧 支持终端打开 mock 文件所在位置
|
|
24
|
+
- 🎨 自动生成和打开现代化的 API 概览页面
|
|
25
|
+
- 🌐 支持跨域配置
|
|
26
|
+
- 🔄 支持热更新(Mock 文件改动后自动重启)
|
|
27
|
+
- 📁 支持文件浏览器,可预览各种文件类型
|
|
28
|
+
- 💾 支持保存接口响应数据
|
|
29
|
+
- 🔗 支持 HTTP 请求代理
|
|
20
30
|
|
|
21
|
-
|
|
31
|
+
## 📦 安装
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
> Mock File 仅支持 commonjs 规范的 js、cjs 文件,不支持 ES Module
|
|
30
|
-
|
|
31
|
-
支持以下常见业务场景:
|
|
32
|
-
|
|
33
|
-
- [x] 无服务端演示项目的数据 Mock
|
|
34
|
-
- [x] 业务开发接口联调前的数据 Mock
|
|
35
|
-
- [x] 保留业务项目的所有或部分接口的响应数据(写入文件)
|
|
36
|
-
- [x] 保障前端开发调试不受后端服务影响(当后端服务挂掉或部分接口响应异常时启用 Mock)
|
|
37
|
-
|
|
38
|
-
#### Web Server - SPA Web 服务器
|
|
39
|
-
|
|
40
|
-
对 React、Vue 等单页应用项目构建生成的 dist 目录,启动本地 web 服务器(相当于使用本地安装的 nginx 服务)来模拟运行生产环境下的 web 服务
|
|
41
|
-
|
|
42
|
-
#### Http request proxy - 基于浏览器的本地代理服务
|
|
43
|
-
|
|
44
|
-
实现了本地接口代理的能力,一般接口测试工具无法查看到 request 和 response 中 headers 的更多详情,这里实现了接口代理功能,在 Network 中可查看接口调用的详细信息。
|
|
45
|
-
|
|
46
|
-
> 两种应用场景
|
|
47
|
-
|
|
48
|
-
- 项目 dev 模式下的接口代理请求
|
|
49
|
-
- Chrome 的 Console 执行 fetch 请求(用于接口测试)
|
|
50
|
-
|
|
51
|
-
## Installation:
|
|
52
|
-
|
|
53
|
-
#### Running on-demand:
|
|
54
|
-
|
|
55
|
-
Using `npx` you can run the script without installing it first:
|
|
56
|
-
|
|
57
|
-
npx mock-service-cli [path] [options]
|
|
58
|
-
|
|
59
|
-
#### Globally via `npm`
|
|
60
|
-
|
|
61
|
-
npm install --global mock-service-cli
|
|
62
|
-
|
|
63
|
-
This will install `mock-service-cli` globally so that it may be run from the command line anywhere.
|
|
64
|
-
|
|
65
|
-
#### Globally via Homebrew
|
|
66
|
-
|
|
67
|
-
brew install mock-service-cli
|
|
68
|
-
|
|
69
|
-
#### As a dependency in your `npm` package:
|
|
70
|
-
|
|
71
|
-
npm install mock-service-cli
|
|
72
|
-
|
|
73
|
-
## Usage:
|
|
74
|
-
|
|
75
|
-
mock-service-cli [options] [path]
|
|
76
|
-
|
|
77
|
-
`[path]` defaults to `./mock` .
|
|
78
|
-
|
|
79
|
-
| Command | Description | Defaults |
|
|
80
|
-
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
|
|
81
|
-
| `-h` or `--help` | Print this list and exit. | |
|
|
82
|
-
| `-p` or `--port` | Mock server port to use. Use `-p 8090` to look for an open port, starting at 8090. | 8090 |
|
|
83
|
-
| `-d` | Specify mock directory | ./mock |
|
|
84
|
-
| `-f` | Specify mock file | |
|
|
85
|
-
| `-s` or `--silent` | Suppress log messages from output | |
|
|
86
|
-
| `-v` or `--version` | Print the version and exit. | |
|
|
87
|
-
| `-S` or `--socket-server` | Start socket server which used to save api response data for future mock. | false |
|
|
88
|
-
| `-a` or `--api-stat` | Whether print api url and file path info or not, default false. | false |
|
|
89
|
-
| `-t` or `--track` | Whether record operation info by write file, default false. | false |
|
|
90
|
-
| `-o` or `--cors-origin` | Allow origin by cors, list separated by commas, must not be \* when withCredential is true .If specified, cors-headers will be `Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,Token` | \* |
|
|
91
|
-
| `-O` or `--proxy-options` | Optionally provide http request proxy options list, support accept js file、json file、cli arguments string. Examples: `-O '/api/apaas\|http://192.168.0.105:60700,/api/permission\| http://192.168.0.105:60700'`. Must start web server to use proxy for http request test under browser console or api test tools. | - |
|
|
92
|
-
| `-H` or `--cors-headers` | When start Mock Server, optionally provide CORS headers list separated by commas. default . | \* |
|
|
93
|
-
| `-A` or `--append-headers` | When start Mock/Web/Static Server, optionally add response headers list separated by commas. For example: X-Frame-options=DENY,content-security-policy=frame-ancestors. | - |
|
|
94
|
-
| `-P` or `--web-port` | Web server port to use. Use `-P 9090` to look for an open port, starting at 9090. | 9090 |
|
|
95
|
-
| `-b` or `--web-baseurl` | Specify public path of the SPA web server, can be base address of SPA route. | - |
|
|
96
|
-
| `-R` or `--static-server` | Specify directory of the Static Web Server. | - |
|
|
97
|
-
|
|
98
|
-
## Example
|
|
99
|
-
|
|
100
|
-
1. Specify static resource file directory to startup Static Server.
|
|
101
|
-
|
|
102
|
-
`mock-service-cli -R ./test`
|
|
103
|
-
|
|
104
|
-
2. Specify mock server port.
|
|
105
|
-
|
|
106
|
-
`mock-service-cli -p 8085`
|
|
107
|
-
|
|
108
|
-
3. Enable cors of mock server, specify the origin and headers of http request.
|
|
109
|
-
|
|
110
|
-
`mock-service-cli -o "http://192.168.0.8:38200,http://10.30.30.3" -H "custom-header"`
|
|
111
|
-
|
|
112
|
-
4. Specify mock directory to startup Mock Server.
|
|
113
|
-
|
|
114
|
-
`mock-service-cli -d ./mock`
|
|
115
|
-
|
|
116
|
-
5. Specify mock file to startup Mock Server.
|
|
117
|
-
|
|
118
|
-
`mock-service-cli -f ./mock/test.js`
|
|
119
|
-
|
|
120
|
-
6. Start socket server for used to save api response data.
|
|
121
|
-
|
|
122
|
-
`mock-service-cli -S`
|
|
33
|
+
### 全局安装
|
|
34
|
+
```bash
|
|
35
|
+
npm install --global mock-service-cli
|
|
36
|
+
# 或
|
|
37
|
+
brew install mock-service-cli
|
|
38
|
+
```
|
|
123
39
|
|
|
124
|
-
|
|
125
|
-
|
|
40
|
+
### 局部安装
|
|
41
|
+
```bash
|
|
42
|
+
npm install mock-service-cli --save-dev
|
|
43
|
+
```
|
|
126
44
|
|
|
127
|
-
|
|
45
|
+
### 直接运行
|
|
46
|
+
```bash
|
|
47
|
+
npx mock-service-cli [options] [path]
|
|
48
|
+
```
|
|
128
49
|
|
|
129
|
-
|
|
50
|
+
## 🛠️ 命令行选项
|
|
51
|
+
|
|
52
|
+
| 选项 | 描述 | 默认值 |
|
|
53
|
+
| ------------------------- | ------------------------------------------------------------------------------------------------------------ | --------- |
|
|
54
|
+
| `-h` 或 `--help` | 显示帮助信息 | - |
|
|
55
|
+
| `-p` 或 `--port` | Mock 服务器端口 | 8090 |
|
|
56
|
+
| `-d` | 指定 mock 目录 | ./mock |
|
|
57
|
+
| `-f` | 指定单个 mock 文件 | - |
|
|
58
|
+
| `-s` 或 `--silent` | 抑制日志输出 | - |
|
|
59
|
+
| `-v` 或 `--version` | 显示版本信息 | - |
|
|
60
|
+
| `-S` 或 `--socket-server` | 启动 socket 服务器,用于保存 API 响应数据 | false |
|
|
61
|
+
| `-a` 或 `--api-stat` | 打印 API URL 和文件路径信息 | false |
|
|
62
|
+
| `-t` 或 `--track` | 记录操作信息到文件 | false |
|
|
63
|
+
| `-o` 或 `--cors-origin` | 配置 CORS 允许的源,多个源用逗号分隔 | * |
|
|
64
|
+
| `-O` 或 `--proxy-options` | 配置 HTTP 请求代理选项,支持 js 文件、json 文件或命令行参数 | - |
|
|
65
|
+
| `-H` 或 `--cors-headers` | 配置 CORS 头信息 | * |
|
|
66
|
+
| `-A` 或 `--append-headers`| 添加响应头信息,多个头用逗号分隔 | - |
|
|
67
|
+
| `-D` 或 `--web-dir` | 启用 Web 服务器,指定 web 目录(SPA 应用) | - |
|
|
68
|
+
| `-P` 或 `--web-port` | Web 服务器端口 | 9090 |
|
|
69
|
+
| `-b` 或 `--web-baseurl` | 指定 SPA Web 服务器的公共路径 | - |
|
|
70
|
+
| `-R` 或 `--static-server` | 启用静态服务器,指定静态资源目录 | - |
|
|
71
|
+
| `-w` 或 `--open` | 自动打开 API 概览页面 | false |
|
|
72
|
+
| `-e` 或 `--explorer` | 启用文件浏览器服务器,指定要浏览的目录 | ./ |
|
|
73
|
+
|
|
74
|
+
## 📖 使用示例
|
|
75
|
+
|
|
76
|
+
### Mock 服务器
|
|
77
|
+
```bash
|
|
78
|
+
# 使用默认配置启动 Mock 服务器
|
|
79
|
+
mock-service-cli
|
|
80
|
+
|
|
81
|
+
# 指定端口和目录
|
|
82
|
+
mock-service-cli -p 8080 -d ./api
|
|
83
|
+
|
|
84
|
+
# 自动打开 API 概览页面
|
|
85
|
+
mock-service-cli --open
|
|
86
|
+
|
|
87
|
+
# 使用单个 Mock 文件
|
|
88
|
+
mock-service-cli -f ./mock.js
|
|
89
|
+
```
|
|
130
90
|
|
|
131
|
-
|
|
91
|
+
### 静态服务器
|
|
92
|
+
```bash
|
|
93
|
+
# 启动静态服务器
|
|
94
|
+
mock-service-cli -R ./public
|
|
95
|
+
```
|
|
132
96
|
|
|
133
|
-
|
|
97
|
+
### Web 服务器 (SPA)
|
|
98
|
+
```bash
|
|
99
|
+
# 启动 SPA 服务器
|
|
100
|
+
mock-service-cli -D ./dist
|
|
134
101
|
|
|
135
|
-
|
|
102
|
+
# 指定公共路径和端口
|
|
103
|
+
mock-service-cli -D ./dist -b /app -P 9090
|
|
104
|
+
```
|
|
136
105
|
|
|
137
|
-
|
|
106
|
+
### HTTP 代理
|
|
107
|
+
```bash
|
|
108
|
+
# 启动带代理的 Web 服务器
|
|
109
|
+
mock-service-cli -D ./ -O '/api|http://localhost:3000'
|
|
138
110
|
|
|
139
|
-
|
|
111
|
+
# 使用代理配置文件
|
|
112
|
+
mock-service-cli -D ./ -O ./proxy.js
|
|
113
|
+
```
|
|
140
114
|
|
|
141
|
-
|
|
115
|
+
### 文件浏览器
|
|
116
|
+
```bash
|
|
117
|
+
# 浏览当前目录
|
|
118
|
+
mock-service-cli -e ./
|
|
142
119
|
|
|
143
|
-
|
|
120
|
+
# 浏览指定目录
|
|
121
|
+
mock-service-cli -e /path/to/directory
|
|
144
122
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
'/api/apaas': 'http://192.168.0.105:60700',
|
|
148
|
-
'/api/permission': 'http://192.168.0.105:60700'
|
|
149
|
-
};
|
|
123
|
+
# 指定端口
|
|
124
|
+
mock-service-cli -e ./ -p 9090
|
|
150
125
|
```
|
|
151
126
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
> mock 请求的类型支持`GET`,`POST`,`PUT`,`DELETE`,`PATCH`,`OPTIONS`,`COPY`,`LINK`,`UNLINK`,`PURGE`
|
|
127
|
+
## 📝 编写 Mock 文件
|
|
155
128
|
|
|
156
|
-
|
|
129
|
+
Mock 文件支持 CommonJS 规范,不支持 ES Module。
|
|
157
130
|
|
|
158
131
|
```javascript
|
|
132
|
+
// mock/test.js
|
|
159
133
|
module.exports = {
|
|
160
134
|
// GET 可忽略
|
|
161
|
-
'/mock/
|
|
135
|
+
'/mock/api/test': { aa: 1, bb: '默认GET请求' },
|
|
162
136
|
'GET /mock/api/:id/test': { aa: 1, bb: '使用id占位符' },
|
|
163
|
-
'GET /mock/api/test1': { aa: 1, bb: '指定GET 方法' },
|
|
164
137
|
'POST /mock/api/test': { aa: 1, bb: 'POST 方法' },
|
|
165
138
|
'DELETE /mock/api/test': { aa: 1, bb: 'DELETE 方法' },
|
|
166
|
-
|
|
167
|
-
'PATCH /mock/api/test': { aa: 1, bb: 'PATCH 方法' },
|
|
168
|
-
'OPTIONS /mock/api/test': { aa: 1, bb: 'OPTIONS 方法' },
|
|
169
|
-
'COPY /mock/api/test': { aa: 1, bb: 'COPY 方法' },
|
|
170
|
-
'LINK /mock/api/test': { aa: 1, bb: 'LINK 方法' },
|
|
171
|
-
'UNLINK /mock/api/test': { aa: 1, bb: 'UNLINK 方法' },
|
|
172
|
-
'PURGE /mock/api/test': { aa: 1, bb: 'PURGE 方法' },
|
|
173
|
-
// 支持自定义函数,API 参考 express@4
|
|
139
|
+
// 支持自定义函数
|
|
174
140
|
'/mock/api/video/test': (req, res) => {
|
|
175
|
-
// 添加特定请求头token
|
|
176
141
|
res.header('token', '5848778333359208');
|
|
177
142
|
res.json({ aa: 1, bb: 'asdf' });
|
|
178
143
|
}
|
|
179
144
|
};
|
|
180
145
|
```
|
|
181
146
|
|
|
182
|
-
然后访问 `本地代理地址` + `/mock/api/222/test` (例如`http://127.0.0.1:8090/mock/api/222/test`) 就能得到 { aa: 1, bb: '使用 id 占位符' } 的响应,其他以此类推。
|
|
183
|
-
|
|
184
|
-

|
|
185
|
-
|
|
186
147
|
### 引入 Mock.js
|
|
187
148
|
|
|
188
|
-
[Mock.js](http://mockjs.com/)
|
|
149
|
+
可以使用 [Mock.js](http://mockjs.com/) 生成模拟数据:
|
|
189
150
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
```js
|
|
151
|
+
```javascript
|
|
193
152
|
const mockjs = require('mockjs');
|
|
194
153
|
|
|
195
154
|
module.exports = {
|
|
196
|
-
// 使用 mockjs 等三方库
|
|
197
155
|
'GET /api/tags': mockjs.mock({
|
|
198
|
-
'list|100': [
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
urgentType: '@cword(3, 5)',
|
|
204
|
-
'isCrash|1': 'true',
|
|
205
|
-
createTime: '@date',
|
|
206
|
-
'value|1-100': 50,
|
|
207
|
-
'type|0-2': 1
|
|
208
|
-
}
|
|
209
|
-
]
|
|
156
|
+
'list|100': [{
|
|
157
|
+
'NO|+1': 1,
|
|
158
|
+
city: '@city',
|
|
159
|
+
'value|1-100': 50
|
|
160
|
+
}]
|
|
210
161
|
})
|
|
211
162
|
};
|
|
212
163
|
```
|
|
213
164
|
|
|
214
|
-
|
|
165
|
+
## 🎨 API 概览页面
|
|
166
|
+
|
|
167
|
+
现代化的 Web 界面,用于展示和测试所有已注册的 Mock API 接口。
|
|
168
|
+
|
|
169
|
+
### 功能特性
|
|
170
|
+
- 📁 按目录分类展示 API
|
|
171
|
+
- 🔍 支持搜索接口
|
|
172
|
+
- 🎯 每种 HTTP 方法使用不同颜色标签
|
|
173
|
+
- 🧪 支持直接在页面中测试 API
|
|
174
|
+
- 📋 响应数据格式化展示
|
|
215
175
|
|
|
216
|
-
|
|
176
|
+
### 访问方式
|
|
177
|
+
- **自动打开**:使用 `--open` 参数
|
|
178
|
+
- **手动访问**:`http://localhost:8090/__api-overview`
|
|
217
179
|
|
|
218
|
-
|
|
180
|
+
## 📁 文件浏览器
|
|
219
181
|
|
|
220
|
-
|
|
182
|
+
现代化的文件浏览界面,支持目录导航、文件预览和管理。
|
|
221
183
|
|
|
222
|
-
###
|
|
184
|
+
### 功能特性
|
|
185
|
+
- 📁 **目录导航**:面包屑导航,支持快速跳转
|
|
186
|
+
- 👁️ **文件预览**:
|
|
187
|
+
- 图片文件:直接预览(JPG、PNG、GIF、WebP 等)
|
|
188
|
+
- 文本文件:代码高亮预览(JS、JSON、HTML、CSS 等)
|
|
189
|
+
- 其他文件:提供下载
|
|
190
|
+
- 🎨 **图标标识**:不同文件类型使用不同颜色图标
|
|
191
|
+
- 📱 **视图切换**:网格视图和列表视图
|
|
192
|
+
- ⚡ **操作功能**:
|
|
193
|
+
- 在系统文件管理器中打开
|
|
194
|
+
- 复制文件路径
|
|
195
|
+
- 下载文件
|
|
196
|
+
- 刷新目录
|
|
197
|
+
- 显示/隐藏隐藏文件
|
|
198
|
+
- 🔍 **搜索**:支持文件名模糊搜索
|
|
199
|
+
- 📊 **排序**:按名称、时间、大小排序
|
|
200
|
+
- ⌨️ **键盘快捷键**:
|
|
201
|
+
- `Escape`:关闭预览
|
|
202
|
+
- `Backspace`:返回上级
|
|
223
203
|
|
|
224
|
-
|
|
204
|
+
### 界面预览
|
|
205
|
+
- 渐变紫色现代化设计
|
|
206
|
+
- 响应式布局
|
|
207
|
+
- 流畅的交互体验
|
|
225
208
|
|
|
226
|
-
|
|
227
|
-
|
|
209
|
+
## 🔧 高级功能
|
|
210
|
+
|
|
211
|
+
### 保存接口响应数据
|
|
212
|
+
|
|
213
|
+
使用 Socket.io 保存接口响应数据,用于后续 Mock:
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
228
216
|
import { io } from 'socket.io-client';
|
|
229
217
|
|
|
230
|
-
const socket = io.connect('http://
|
|
218
|
+
const socket = io.connect('http://localhost:8090/mock-data', {
|
|
231
219
|
transports: ['websocket'],
|
|
232
220
|
path: '/ws/mock-service'
|
|
233
221
|
});
|
|
234
|
-
|
|
222
|
+
|
|
223
|
+
// 保存接口数据
|
|
235
224
|
socket.emit('save-data', { url, method, data, dir });
|
|
236
|
-
|
|
225
|
+
|
|
226
|
+
// 获取目录统计信息
|
|
237
227
|
socket.emit('mock-dir-stat', dirPath);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
socket.emit('mock-file-stat', filePath);
|
|
242
|
-
// 监听SocketServer消息:获取指定文件的Mock统计信息
|
|
243
|
-
socket.on('mock-file-stat', function (mockFileStat) {});
|
|
228
|
+
socket.on('mock-dir-stat', (data) => {
|
|
229
|
+
console.log('统计信息:', data);
|
|
230
|
+
});
|
|
244
231
|
```
|
|
245
232
|
|
|
246
|
-
|
|
233
|
+
## 📚 文档
|
|
247
234
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
import axios from 'axios';
|
|
235
|
+
- [GitHub 仓库](https://github.com/chandq/mock-service-cli)
|
|
236
|
+
- [npm 包](https://www.npmjs.com/package/mock-service-cli)
|
|
251
237
|
|
|
252
|
-
|
|
253
|
-
transports: ['websocket'],
|
|
254
|
-
path: '/ws/mock-service',
|
|
255
|
-
query: {
|
|
256
|
-
token: 'yyds'
|
|
257
|
-
}
|
|
258
|
-
});
|
|
238
|
+
## 🤝 贡献
|
|
259
239
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
axios.interceptors.response.use(res => {
|
|
266
|
-
const {
|
|
267
|
-
config: { method, url },
|
|
268
|
-
data
|
|
269
|
-
} = res;
|
|
270
|
-
socket.emit('save-data', { url, method, data, dir: '/home/chen/projects/model-ui/mock' });
|
|
271
|
-
return res;
|
|
272
|
-
});
|
|
273
|
-
// 根据Mock数据池自动Mock(也可根据实际场景决定是否Mock)
|
|
274
|
-
axios.interceptors.request.use(config => {
|
|
275
|
-
if (Object.keys(mockObj).includes(`${config.method} ${config.url}`)) {
|
|
276
|
-
config.baseURL = 'http://localhost:8090';
|
|
277
|
-
}
|
|
278
|
-
return config;
|
|
279
|
-
});
|
|
280
|
-
```
|
|
240
|
+
欢迎提交 Issue 和 Pull Request!
|
|
241
|
+
|
|
242
|
+
## 📄 许可证
|
|
243
|
+
|
|
244
|
+
MIT License - 详见 [LICENSE.md](LICENSE.md)
|
package/bin/mock-service-cli
CHANGED
|
@@ -45,7 +45,9 @@ if (argv.h || argv.help) {
|
|
|
45
45
|
' -R --static-server Specify static resource file directory when enabled static server.',
|
|
46
46
|
'',
|
|
47
47
|
' -h --help Print this list and exit.',
|
|
48
|
-
' -v --version Print the version and exit.'
|
|
48
|
+
' -v --version Print the version and exit.',
|
|
49
|
+
' -w --open Open API overview page automatically, default false.',
|
|
50
|
+
' -e --explorer Enable file explorer server, specify directory to browse, default [./].'
|
|
49
51
|
].join('\n')
|
|
50
52
|
);
|
|
51
53
|
process.exit();
|
|
@@ -60,6 +62,8 @@ var port = argv.p || argv.port,
|
|
|
60
62
|
version = argv.v || argv.version,
|
|
61
63
|
isStartSocketServer = argv.S || false,
|
|
62
64
|
rewrite = argv.r || argv.rewrite || false,
|
|
65
|
+
isOpenApiOverview = argv.w || argv.open || false,
|
|
66
|
+
explorerDir = argv.e || argv.explorer,
|
|
63
67
|
log = null;
|
|
64
68
|
|
|
65
69
|
if (!argv.s && !argv.silent) {
|
|
@@ -79,6 +83,10 @@ if (isStartSocketServer) {
|
|
|
79
83
|
process.env.SOCKET_SERVER = true;
|
|
80
84
|
}
|
|
81
85
|
|
|
86
|
+
if (isOpenApiOverview) {
|
|
87
|
+
process.env.OPEN_API_OVERVIEW = true;
|
|
88
|
+
}
|
|
89
|
+
|
|
82
90
|
if (version) {
|
|
83
91
|
log.info('v' + require('../package.json').version);
|
|
84
92
|
process.exit();
|
|
@@ -89,6 +97,7 @@ injectEnvVariable('CORS_HEADERS', argv.H || argv['cors-headers']);
|
|
|
89
97
|
|
|
90
98
|
injectEnvVariable('WEB_PUBLIC_PATH', argv.b || argv['web-baseurl']);
|
|
91
99
|
injectEnvVariable('STATIC_DIRECTORY', argv.R || argv['static-server']);
|
|
100
|
+
injectEnvVariable('EXPLORER_DIRECTORY', explorerDir);
|
|
92
101
|
// injectEnvVariable('PROXY_OPTIONS', argv.O || argv['proxy-options']);
|
|
93
102
|
// 解析Web代理配置项(来源js|config文件或命令行参数字符串)
|
|
94
103
|
const proxyArg = argv.O || argv['proxy-options'];
|
|
@@ -198,11 +207,26 @@ function startStaticServer() {
|
|
|
198
207
|
stdio: 'inherit'
|
|
199
208
|
});
|
|
200
209
|
}
|
|
210
|
+
|
|
211
|
+
// Node子进程启动FileExplorerServer
|
|
212
|
+
function startFileExplorerServer() {
|
|
213
|
+
spawn(node, [resolve(__dirname, '../lib/fileExplorerServer.js')], {
|
|
214
|
+
stdio: 'inherit'
|
|
215
|
+
});
|
|
216
|
+
}
|
|
201
217
|
/**
|
|
202
218
|
* 初始化服务
|
|
203
219
|
*/
|
|
204
220
|
function initServe() {
|
|
205
|
-
if (
|
|
221
|
+
if (explorerDir) {
|
|
222
|
+
// 文件浏览器:指定目录
|
|
223
|
+
process.env.EXPLORER_DIRECTORY = resolve(process.cwd(), explorerDir);
|
|
224
|
+
if (!existsSync(process.env.EXPLORER_DIRECTORY)) {
|
|
225
|
+
console.error(`explorer: 目录 ${process.env.EXPLORER_DIRECTORY} 不存在`);
|
|
226
|
+
process.exit();
|
|
227
|
+
}
|
|
228
|
+
startFileExplorerServer();
|
|
229
|
+
} else if (specifiedFile) {
|
|
206
230
|
// Mock服务器:指定文件
|
|
207
231
|
process.env.SPECIFIED_FILE = resolve(process.cwd(), specifiedFile);
|
|
208
232
|
if (isStartSocketServer) {
|