mock-switch-webpack-plugin 1.1.1 → 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.
Files changed (2) hide show
  1. package/README.md +359 -188
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,44 +1,68 @@
1
- # Mock Switch Webpack Plugin
1
+ # Mock Switch Webpack Plugin README
2
2
 
3
- <div align="center">
4
3
 
5
- ![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)
6
- ![Webpack](https://img.shields.io/badge/webpack-%3E%3D5.0.0-green.svg)
7
- ![License](https://img.shields.io/badge/license-MIT-yellow.svg)
8
4
 
9
- **基于 webpack5 的开发环境接口 Mock 一键切换插件**
5
+ **前端开发环境 API Mock 与代理管理插件**
10
6
 
11
- </div>
7
+ 一键切换 Mock / 开发 / 生产环境,Mock 数据热更新,无需重启服务
12
8
 
13
- ## 特性
9
+ \[特性\]\(\#\-核心特性\) \[安装\]\(\#\-安装\) • \[快速开始\]\(\#\-快速开始\) • \[配置说明\]\(\#\-配置说明\) • \[Mock 规范\]\(\#\-mock\-文件规范\)
14
10
 
15
- ### 🎯 核心功能
16
- - **🔄 浏览器端一键切换** - 页面内悬浮面板,Mock / 测试 / 生产环境无缝切换
17
- - **🔥 Mock 数据热更新** - 修改 Mock 文件立即生效,无需重启服务
18
- - **📝 自动记录真实接口** - 代理请求时自动记录返回,一键保存为 Mock 文件
19
- - **📂 自动路径匹配** - 根据接口路径自动查找对应 Mock 文件
20
- - **⚡ 零侵入式设计** - 纯 webpack 插件,无需修改业务代码
21
11
 
22
- ### 🎨 界面预览
23
- - 右下角悬浮切换按钮,状态指示灯(绿=Mock/黄=测试/红=生产)
24
- - 优雅的下拉面板,环境列表 + 已记录接口;
25
- - 点击即可保存真实接口返回为 Mock 文件
26
12
 
27
- ## 🆚 与其他方案对比
13
+ ## 🎯 核心特性
28
14
 
29
- | 功能 | mock-switch-webpack-plugin | mocker-api | webpack-api-mocker | mockjs |
30
- |------|---------------------------|------------|-------------------|--------|
31
- | 浏览器端一键切换 | ✅ | ❌ | ❌ | ❌ |
32
- | Mock数据热更新 | ✅ | ✅ | ✅ | ❌ |
33
- | 自动记录真实接口 | ✅ | ❌ | ❌ | ❌ |
34
- | 一键保存为Mock | ✅ | ❌ | ❌ | ❌ |
35
- | 自动路径匹配 | ✅ | ✅ | ✅ | ❌ |
36
- | Webpack5支持 | ✅ | ✅ | ⚠️ | ❌ |
37
- | 零侵入集成 | ✅ | ⚠️ | ⚠️ | ❌ |
38
- | 动态Mock函数 | ✅ | ✅ | ✅ | ✅ |
39
- | 网络延迟模拟 | ✅ | ✅ | ❌ | ✅ |
15
+ ### 浏览器端一键环境切换
40
16
 
41
- > **为什么选择我们?** 现有方案都只解决了部分问题,本插件一站式解决「环境切换麻烦、Mock数据难维护、需要手动写Mock」三大痛点。
17
+ - 右下角悬浮控制面板,可视化切换环境
18
+
19
+ - 实时状态显示,不同环境对应不同颜色标识
20
+
21
+ - 无需修改代码或重启服务
22
+
23
+ ### 🔥 Mock 数据热更新
24
+
25
+ - 修改 Mock 文件立即生效,无需重启 Webpack DevServer
26
+
27
+ - 自动清除 require 缓存,实时加载最新数据
28
+
29
+ - 支持开发过程中快速调试接口
30
+
31
+ ### 📦 开箱即用,零配置
32
+
33
+ - 支持 **CRA \(Create React App\)**、**Vue CLI**、**原生 Webpack** 等所有项目
34
+
35
+ - 兼容 Webpack 3/4/5 全版本
36
+
37
+ - 兼容 Webpack 打包发布模式
38
+
39
+ ### 🔌 智能请求处理
40
+
41
+ - POST/PUT/PATCH 请求 body 自动解析与转发
42
+
43
+ - 支持 JSON 和表单格式请求
44
+
45
+ - 自动移除 API 前缀,无缝代理转发
46
+
47
+ ### 🛡️ 热重载友好
48
+
49
+ - 全局单例模式,防止 CRA 热重载时重复创建实例
50
+
51
+ - 环境状态跨热重载持久化
52
+
53
+ - 解决全局状态隔离问题
54
+
55
+ ## 🆚 方案对比
56
+
57
+ |特性|Mock Switch|mockjs|http\-proxy\-middleware|
58
+ |---|---|---|---|
59
+ |浏览器可视化切换|✅|❌|❌|
60
+ |Mock 数据热更新|✅|❌|\-|
61
+ |无需重启服务|✅|❌|❌|
62
+ |多环境一键切换|✅|❌|✅|
63
+ |POST Body 自动解析|✅|❌|⚠️ 需手动|
64
+ |CRA 友好支持|✅|⚠️|⚠️|
65
+ |打包兼容|✅|✅|✅|
42
66
 
43
67
  ## 📦 安装
44
68
 
@@ -52,254 +76,401 @@ pnpm add mock-switch-webpack-plugin -D
52
76
 
53
77
  ## 🚀 快速开始
54
78
 
55
- ### 1. 配置 webpack.config.js
79
+ ### 方式一:原生 Webpack 项目(推荐)
80
+
81
+ **webpack\.config\.js**
56
82
 
57
83
  ```javascript
58
- const WebpackMockSwitchPlugin = require('mock-switch-webpack-plugin');
84
+ const MockSwitchWebpackPlugin = require('mock-switch-webpack-plugin');
59
85
 
60
86
  module.exports = {
61
87
  // ... 其他配置
62
88
  plugins: [
63
- new WebpackMockSwitchPlugin({
64
- // Mock文件目录(相对项目根目录)
89
+ new MockSwitchWebpackPlugin({
65
90
  mockDir: './mock',
66
- // 接口前缀,只拦截该前缀的请求
67
91
  apiPrefix: '/api',
68
- // 环境配置
69
92
  environments: {
70
- mock: { name: 'Mock环境', target: null },
71
- test: { name: '测试环境', target: 'http://localhost:3000' },
72
- prod: { name: '生产环境', target: 'https://api.yourdomain.com' }
73
- },
74
- // 自动记录真实接口返回
75
- autoRecord: true,
76
- // 开启热更新
77
- hotReload: true
93
+ dev: {
94
+ name: '开发环境',
95
+ target: 'http://localhost:8080'
96
+ },
97
+ prod: {
98
+ name: '生产环境',
99
+ target: 'https://api.example.com'
100
+ }
101
+ }
78
102
  })
79
- ],
80
- devServer: {
81
- // 插件会自动注入中间件,无需额外配置
82
- hot: true,
83
- open: true
84
- }
103
+ ]
85
104
  };
86
105
  ```
87
106
 
88
- ### 2. 创建 Mock 文件
107
+ ### 方式二:CRA \(Create React App\) 项目
108
+
109
+ CRA 项目需要同时配置 **webpack\.config\.js** 和 **setupProxy\.js** 两个文件。
110
+
111
+ #### 步骤 1:配置 webpack\.config\.js
112
+
113
+ 使用 `craco` 或 `react-app-rewired` 覆盖 Webpack 配置:
89
114
 
90
- 在项目根目录创建 `mock` 文件夹,按以下命名规则创建文件:
115
+ **craco\.config\.js** **config\-overrides\.js**
91
116
 
117
+ ```javascript
118
+ const MockSwitchWebpackPlugin = require('mock-switch-webpack-plugin');
119
+
120
+ module.exports = {
121
+ webpack: {
122
+ plugins: [
123
+ new MockSwitchWebpackPlugin({
124
+ autoRegisterMiddleware: false, // CRA 必须设为 false
125
+ hotReload: true
126
+ })
127
+ ]
128
+ }
129
+ };
92
130
  ```
93
- mock/
94
- ├── GET_user_list.json # GET /api/user/list
95
- ├── POST_user_login.js # POST /api/user/login
96
- ├── GET_user_1_detail.json # GET /api/user/1/detail
97
- └── config.js # 其他配置
131
+
132
+ > 💡 **作用**:向打包输出注入客户端 UI 代码,实现浏览器右下角的环境切换悬浮面板。
133
+ >
134
+ >
135
+
136
+ #### 步骤 2:配置 src/setupProxy\.js
137
+
138
+ **src/setupProxy\.js**(CRA 官方约定的代理配置文件)
139
+
140
+ ```javascript
141
+ const { createMockMiddleware } = require('mock-switch-webpack-plugin');
142
+
143
+ module.exports = function(app) {
144
+ createMockMiddleware(app, {
145
+ mockDir: './mock',
146
+ apiPrefix: '/api',
147
+ environments: {
148
+ dev: {
149
+ name: '开发环境',
150
+ target: 'http://localhost:8080'
151
+ },
152
+ prod: {
153
+ name: '生产环境',
154
+ target: 'https://api.example.com'
155
+ }
156
+ }
157
+ });
158
+ };
98
159
  ```
99
160
 
100
- #### 静态 Mock (JSON)
161
+ > 💡 **setupProxy\.js 作用说明**:
162
+ >
163
+ > - CRA 开发服务器启动时自动加载此文件
164
+ >
165
+ > - 用于注册 Express 中间件,接管 API 请求
166
+ >
167
+ > - 实现 Mock 数据返回与代理转发逻辑
168
+ >
169
+ > - 使用单例模式,解决 CRA 热重载导致的重复实例问题
170
+ >
171
+ >
101
172
 
102
- ```json
103
- // mock/GET_user_list.json
104
- {
105
- "code": 0,
106
- "message": "success",
107
- "data": {
108
- "list": [
109
- { "id": 1, "name": "张三" },
110
- { "id": 2, "name": "李四" }
173
+ ### 方式三:Vue CLI 项目
174
+
175
+ **vue\.config\.js**
176
+
177
+ ```javascript
178
+ const MockSwitchWebpackPlugin = require('mock-switch-webpack-plugin');
179
+
180
+ module.exports = {
181
+ configureWebpack: {
182
+ plugins: [
183
+ new MockSwitchWebpackPlugin({
184
+ // 配置项
185
+ })
111
186
  ]
112
- },
113
- "_delay": 500
114
- }
187
+ }
188
+ };
115
189
  ```
116
190
 
117
- #### 动态 Mock (JS 函数)
191
+ ## ⚙️ 配置说明
192
+
193
+ ### 完整配置项
118
194
 
119
195
  ```javascript
120
- // mock/POST_user_login.js
121
- module.exports = function(req, res) {
122
- const { username, password } = req.body;
123
-
124
- if (username === 'admin' && password === '123456') {
125
- return {
126
- code: 0,
127
- message: '登录成功',
128
- data: { token: 'mock_' + Date.now() }
129
- };
196
+ new MockSwitchWebpackPlugin({
197
+ /**
198
+ * Mock 文件存放目录
199
+ * @default './mock'
200
+ */
201
+ mockDir: './mock',
202
+
203
+ /**
204
+ * API 请求前缀
205
+ * @default '/api'
206
+ */
207
+ apiPrefix: '/api',
208
+
209
+ /**
210
+ * 是否启用 Mock 文件热更新
211
+ * @default true
212
+ */
213
+ hotReload: true,
214
+
215
+ /**
216
+ * 是否自动注册 DevServer 中间件
217
+ * @default true
218
+ * CRA 项目请设为 false,使用 createMockMiddleware
219
+ */
220
+ autoRegisterMiddleware: true,
221
+
222
+ /**
223
+ * 环境配置
224
+ * 内置 mock/dev/prod 三个环境,可自定义名称和目标地址
225
+ */
226
+ environments: {
227
+ mock: {
228
+ name: 'Mock环境',
229
+ target: null // null 表示使用本地Mock文件
230
+ },
231
+ dev: {
232
+ name: '开发环境',
233
+ target: 'http://localhost:8080'
234
+ },
235
+ prod: {
236
+ name: '生产环境',
237
+ target: 'https://api.example.com'
238
+ }
130
239
  }
131
-
132
- return {
133
- code: 401,
134
- message: '用户名或密码错误'
135
- };
136
- };
240
+ })
137
241
  ```
138
242
 
139
- ### 3. 启动开发服务
243
+ ### environments 详解
140
244
 
141
- ```bash
142
- npm run start
245
+ 每个环境配置包含:
246
+
247
+ |参数|类型|说明|
248
+ |---|---|---|
249
+ |`name`|string|环境显示名称,支持 emoji|
250
+ |`target`|string \| null|代理目标地址,null 表示使用 Mock|
251
+
252
+ **示例:自定义环境**
253
+
254
+ ```javascript
255
+ environments: {
256
+ mock: { name: '🟢 Mock环境', target: null },
257
+ test: { name: '🔵 测试环境', target: 'http://test-api.example.com' },
258
+ pre: { name: '🟡 预发环境', target: 'http://pre-api.example.com' },
259
+ prod: { name: '🔴 生产环境', target: 'https://api.example.com' }
260
+ }
143
261
  ```
144
262
 
145
- 打开浏览器,你会看到右下角的悬浮切换按钮 🎉
263
+ ---
264
+
265
+ ### setupProxy\.js 配置详解(CRA 专用)
266
+
267
+ #### 什么是 setupProxy\.js?
146
268
 
147
- ## ⚙️ 配置选项
269
+ `setupProxy.js` **Create React App** 官方约定的代理配置文件,位于 `src/` 目录下,CRA 开发服务器启动时会**自动加载**此文件。
148
270
 
149
- | 参数 | 类型 | 默认值 | 说明 |
150
- |------|------|--------|------|
151
- | `mockDir` | `string` | `./mock` | Mock 文件存放目录 |
152
- | `apiPrefix` | `string` | `/api` | 需要拦截的接口前缀 |
153
- | `environments` | `object` | 见下方 | 环境配置列表 |
154
- | `autoRecord` | `boolean` | `true` | 是否自动记录真实接口 |
155
- | `hotReload` | `boolean` | `true` | 是否开启 Mock 热更新 |
156
- | `port` | `number` | `38080` | 控制面板端口 |
271
+ #### 为什么 CRA 需要 setupProxy\.js?
157
272
 
158
- ### environments 默认配置
273
+ 1. **CRA 隐藏了 webpack\.config\.js**,无法直接修改 DevServer 配置
274
+
275
+ 2. **HTTP 代理中间件**必须在 Express 应用层注册
276
+
277
+ 3. **Mock 逻辑**需要在请求到达 React 之前拦截处理
278
+
279
+ #### createMockMiddleware 函数参数
159
280
 
160
281
  ```javascript
161
- {
162
- mock: { name: 'Mock环境', target: null }, // 本地Mock
163
- test: { name: '测试环境', target: 'http://localhost:3000' },
164
- prod: { name: '生产环境', target: 'https://api.example.com' }
282
+ createMockMiddleware(app, options)
283
+ ```
284
+
285
+ |参数|类型|说明|
286
+ |---|---|---|
287
+ |`app`|Express|Express 应用实例,由 CRA 传入|
288
+ |`options`|Object|配置选项,与插件构造函数参数一致|
289
+
290
+ #### 内部工作原理
291
+
292
+ ```javascript
293
+ function createMockMiddleware(app, options) {
294
+ // 1. 单例模式:热重载复用已有实例
295
+ if (_pluginSingleton) return _pluginSingleton;
296
+
297
+ // 2. 创建插件实例(关闭自动注册中间件)
298
+ _pluginSingleton = new MockSwitchWebpackPlugin({
299
+ ...options,
300
+ autoRegisterMiddleware: false
301
+ });
302
+
303
+ // 3. 手动注册路由和中间件
304
+ _pluginSingleton.registerRoutesWithBodyParser(app);
305
+
306
+ return _pluginSingleton;
165
307
  }
166
308
  ```
167
309
 
168
- ## 📖 使用指南
310
+ #### 关键配置要点
311
+
312
+ - **必须**设置 `autoRegisterMiddleware: false`
169
313
 
170
- ### 1. 环境切换
314
+ - **必须**使用 `createMockMiddleware` 而非直接 `new MockSwitchWebpackPlugin()`
171
315
 
172
- 1. 点击右下角悬浮按钮打开面板
173
- 2. 点击对应环境即可切换
174
- 3. 状态指示灯会变色(绿/黄/红)
175
- 4. 后续请求自动走对应环境
316
+ - **支持**热重载:全局单例 \+ 状态持久化
176
317
 
177
- ### 2. 自动记录 & 保存 Mock
318
+ - **自动**注册 express\.json \(\) urlencoded 中间件
178
319
 
179
- 1. 切换到测试/生产环境
180
- 2. 正常调用接口(插件会自动记录返回)
181
- 3. 打开面板,在「已记录的接口」列表中
182
- 4. 点击「保存」按钮,自动生成 Mock 文件
320
+ ## 📝 Mock 文件规范
183
321
 
184
- ### 3. Mock 文件匹配规则
322
+ ### 目录结构
323
+
324
+ ```Plain Text
325
+ your-project/
326
+ ├── mock/
327
+ │ ├── GET_users.json # GET /api/users
328
+ │ ├── POST_users.js # POST /api/users
329
+ │ ├── GET_users_1.json # GET /api/users/1
330
+ │ └── GET_users_1_orders.js # GET /api/users/1/orders
331
+ └── src/
332
+ ```
333
+
334
+ ### 文件命名规则
185
335
 
186
336
  插件会按以下优先级查找 Mock 文件:
187
337
 
188
- 1. `{METHOD}_{path}.json` - `GET_user_list.json`
189
- 2. `{path}.json` - 如 `user_list.json`
190
- 3. `{METHOD}_{path}.js` - `GET_user_list.js`
191
- 4. `{path}.js` - 如 `user_list.js`
192
- 5. 目录结构匹配 - 如 `/mock/user/list.json`
338
+ 1. `{METHOD}_{path}.json` \- 带方法的 JSON 文件
339
+
340
+ 2. `{path}.json` \- 不带方法的 JSON 文件
193
341
 
194
- > 💡 提示:路径中的 `/` 会自动转换为 `_`
342
+ 3. `{METHOD}_{path}.js` \- 带方法的 JS 文件
195
343
 
196
- ### 4. 高级功能
344
+ 4. `{path}.js` \- 不带方法的 JS 文件
197
345
 
198
- #### 模拟网络延迟
346
+ > `path` 中的 `/` 会被替换为 `_`
347
+ >
348
+ >
199
349
 
200
- JSON 中添加 `_delay` 字段:
350
+ ### 静态 Mock \(JSON 文件\)
351
+
352
+ **mock/GET\_users\.json**
201
353
 
202
354
  ```json
203
355
  {
204
356
  "code": 0,
205
- "data": {},
206
- "_delay": 1000 // 延迟1秒返回
357
+ "message": "success",
358
+ "data": [
359
+ { "id": 1, "name": "张三" },
360
+ { "id": 2, "name": "李四" }
361
+ ],
362
+ "_delay": 500
207
363
  }
208
364
  ```
209
365
 
210
- #### 动态 Mock 函数
366
+ ### 动态 Mock \(JS 文件\)
211
367
 
212
- JS 文件导出函数,可访问 req/res 对象:
368
+ **mock/POST\_users\.js**
213
369
 
214
370
  ```javascript
215
- module.exports = async (req, res) => {
216
- // 获取查询参数
217
- const { page, size } = req.query;
218
-
219
- // 获取请求体
220
- const body = req.body;
221
-
222
- // 自定义响应头
223
- res.setHeader('X-Custom-Header', 'mock');
371
+ module.exports = function(req, res) {
372
+ // 可以访问请求参数
373
+ const { name, age } = req.body;
224
374
 
375
+ // 返回动态数据
225
376
  return {
226
377
  code: 0,
227
- data: { page, size }
378
+ message: 'success',
379
+ data: {
380
+ id: Date.now(),
381
+ name,
382
+ age,
383
+ createdAt: new Date().toISOString()
384
+ },
385
+ _delay: 300 // 模拟网络延迟(毫秒)
228
386
  };
229
387
  };
230
388
  ```
231
389
 
232
- ## 🔧 打包发布流程
390
+ ### 特殊字段 `_delay`
233
391
 
234
- ### 1. 发布到 npm
392
+ 在返回数据中添加 `_delay` 字段可以模拟网络延迟:
235
393
 
236
- ```bash
237
- # 1. 登录 npm
238
- npm login
394
+ ```json
395
+ {
396
+ "code": 0,
397
+ "data": {},
398
+ "_delay": 1000 // 延迟 1 秒返回
399
+ }
400
+ ```
239
401
 
240
- # 2. 检查 package.json 配置
241
- # - name: 包名(需唯一)
242
- # - version: 语义化版本号
243
- # - main: 入口文件
402
+ ## 🎨 控制面板预览
244
403
 
245
- # 3. 发布
246
- npm publish
404
+ 启动项目后,浏览器右下角会出现悬浮按钮:
247
405
 
248
- # 发布私有包
249
- npm publish --access public
250
- ```
406
+ - 🟢 **绿色** \- Mock 环境
251
407
 
252
- ### 2. 版本管理
408
+ - 🟡 **黄色** \- 开发环境
253
409
 
254
- ```bash
255
- # 补丁版本更新 (1.0.0 -> 1.0.1)
256
- npm version patch
410
+ - 🔴 **红色** \- 生产环境
411
+
412
+ 点击按钮展开面板,点击对应环境即可实时切换。
413
+
414
+ ## 🔧 API 接口
415
+
416
+ 插件自动注册以下控制接口,可用于编程式切换:
257
417
 
258
- # 次版本更新 (1.0.0 -> 1.1.0)
259
- npm version minor
418
+ ### 获取当前环境
260
419
 
261
- # 主版本更新 (1.0.0 -> 2.0.0)
262
- npm version major
420
+ ```Plain Text
421
+ GET /__mock_switch__/env
263
422
  ```
264
423
 
265
- ### 3. 本地测试
424
+ **响应:**
266
425
 
267
- ```bash
268
- # 在插件目录
269
- npm link
426
+ ```json
427
+ {
428
+ "currentEnv": "mock",
429
+ "environments": [
430
+ { "key": "mock", "name": "Mock环境", "target": null },
431
+ { "key": "dev", "name": "开发环境", "target": "http://localhost:8080" },
432
+ { "key": "prod", "name": "生产环境", "target": "https://api.example.com" }
433
+ ]
434
+ }
435
+ ```
436
+
437
+ ### 切换环境
438
+
439
+ ```Plain Text
440
+ POST /__mock_switch__/env
441
+ Content-Type: application/json
270
442
 
271
- # 在测试项目
272
- npm link mock-switch-webpack-plugin
443
+ {
444
+ "env": "dev"
445
+ }
273
446
  ```
274
447
 
275
448
  ## ❓ 常见问题
276
449
 
277
- ### Q: 为什么切换环境后需要刷新页面?
278
- A: 已发出的请求不会改变,新请求会走新环境。建议切换后刷新页面确保一致性。
450
+ ### Q: CRA 热重载后环境状态丢失?
279
451
 
280
- ### Q: Mock 热更新不生效?
281
- A: 检查 `hotReload: true`,确保 Mock 文件在配置的 `mockDir` 目录下。
452
+ A: 插件已内置全局状态持久化机制,使用 `createMockMiddleware` 即可自动处理。
282
453
 
283
- ### Q: 如何处理 body 参数?
284
- A: 需在 devServer 中配置 `devMiddleware: { writeToDisk: true }` 或添加 body-parser 中间件。
454
+ ### Q: Mock 文件修改后不生效?
285
455
 
286
- ### Q: 支持 RESTful 动态路由吗?
287
- A: 目前支持精确匹配,动态路由建议使用 JS Mock 函数处理。
456
+ A: 确保 `hotReload: true`(默认开启),插件会自动清除 require 缓存。
288
457
 
289
- ## 📝 更新日志
458
+ ### Q: POST 请求 body 为空?
290
459
 
291
- ### v1.0.0 (2024-06-15)
292
- - ✅ 首次发布
293
- - ✅ 浏览器端环境切换面板
294
- - ✅ Mock 数据热更新
295
- - ✅ 真实接口自动记录
296
- - ✅ 一键保存为 Mock 文件
297
- - ✅ 自动路径匹配
460
+ A: 插件已内置 express\.json \(\) 和 urlencoded 解析中间件,无需额外配置。
298
461
 
299
- ## 🤝 贡献
462
+ ### Q: 代理请求 404?
300
463
 
301
- 欢迎提交 Issue Pull Request!
464
+ A: 插件会自动移除 `apiPrefix` 前缀,如 `/api/users` → `/users`,确保后端接口路径正确。
302
465
 
303
466
  ## 📄 License
304
467
 
305
- MIT © Webpack Mock Switch Team
468
+ MIT © [lebron\_shi](https://github.com/shilimingY)
469
+
470
+ ---
471
+
472
+
473
+
474
+ **如果这个插件对你有帮助,欢迎给个 ⭐ Star**
475
+
476
+ [GitHub](https://github.com/shilimingY/mock-switch-webpack-plugin) • [Issues](https://github.com/shilimingY/mock-switch-webpack-plugin/issues)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mock-switch-webpack-plugin",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "前端Mock神器!浏览器一键切换Mock/开发/生产环境的Webpack插件,支持接口代理、Mock数据热更新、POST请求自动转发等特性,零配置接入React/Vue等所有Webpack项目,彻底告别需手动修改代码来切换环境的低效开发方式。",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {