@qse/edu-scripts 1.13.8 → 1.13.10
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 +8 -0
- package/docs/feat.md +84 -0
- package/docs/override.md +7 -0
- package/lib/config/paths.js +2 -1
- package/lib/config/plugins/mock-server/defineMock.d.ts +6 -0
- package/lib/config/plugins/mock-server/defineMock.js +31 -0
- package/lib/config/plugins/mock-server/index.js +68 -0
- package/lib/config/webpackDevServerConfig.js +7 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +5 -2
- package/lib/utils/defineConfig.d.ts +7 -0
- package/package.json +5 -1
- package/src/config/paths.js +1 -0
- package/src/config/plugins/mock-server/defineMock.ts +12 -0
- package/src/config/plugins/mock-server/index.js +91 -0
- package/src/config/webpackDevServerConfig.js +8 -0
- package/src/index.ts +1 -0
- package/src/utils/defineConfig.ts +7 -0
package/CHANGELOG.md
CHANGED
package/docs/feat.md
CHANGED
|
@@ -81,3 +81,87 @@ export default () => (
|
|
|
81
81
|
为所有 `overflow: auto/scroll` 自动增加 `-webkit-overflow-scrolling: touch`
|
|
82
82
|
|
|
83
83
|
为所有 `env(safe-area-inset-*)` 增加 fallback
|
|
84
|
+
|
|
85
|
+
## Mock
|
|
86
|
+
|
|
87
|
+
项目内建 mock 服务器,支持热更新,可以在 development 环境下使用
|
|
88
|
+
|
|
89
|
+
mock 功能会根据 mock 文件夹自动判断是否开启
|
|
90
|
+
|
|
91
|
+
可以通过 override.config.js 文件配置 mock 参数关闭该功能
|
|
92
|
+
|
|
93
|
+
### 使用步骤
|
|
94
|
+
|
|
95
|
+
根目录创建 mock 文件夹,在该文件夹下创建的所有 js、ts 文件都会被自动加载,可以创建多层级文件夹
|
|
96
|
+
|
|
97
|
+
```js
|
|
98
|
+
// path: /mock/index.js
|
|
99
|
+
// path: /mock/depth/folder/index.js 支持深层文件
|
|
100
|
+
|
|
101
|
+
import { defineMock } from '@qse/edu-scripts'
|
|
102
|
+
|
|
103
|
+
export default defineMock({
|
|
104
|
+
'GET /api/test/test': { hello: 'world' },
|
|
105
|
+
'GET /api/test/test2': [1, 2, 3],
|
|
106
|
+
'POST /api/test2/test': (req, res) => {
|
|
107
|
+
console.log(req.body, req.cookies)
|
|
108
|
+
res.json({ foo: 'bar' })
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### mock 规则
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
import type { RequestHandler } from 'express'
|
|
117
|
+
type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE'
|
|
118
|
+
type API = string
|
|
119
|
+
|
|
120
|
+
export type MockConfig = Record<
|
|
121
|
+
`${Method} ${API}`,
|
|
122
|
+
string | number | null | undefined | boolean | Record<string, any> | RequestHandler
|
|
123
|
+
>
|
|
124
|
+
|
|
125
|
+
export function defineMock(config: MockConfig) {
|
|
126
|
+
return config
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
mock 名称是由 method 和 apiUrl 组成的,按这种规则去匹配
|
|
131
|
+
|
|
132
|
+
所有 mock 文件最终会被合并到一起,形成一个大的对象。**所以当出现同名的 mock,前面的会被后面的覆盖**
|
|
133
|
+
|
|
134
|
+
可以通过下面的方式去获取参数
|
|
135
|
+
|
|
136
|
+
- `req.body` 获取 body 参数
|
|
137
|
+
- `req.query` 获取链接上的参数
|
|
138
|
+
- `req.cookies` 获取 cookies
|
|
139
|
+
|
|
140
|
+
<Alert>mock 规则比 proxy 具有更高的优先级,如果匹配中了 mock,就会不再去 proxy 了</Alert>
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// path: /mock/index.ts
|
|
144
|
+
import Mock from 'mockjs'
|
|
145
|
+
|
|
146
|
+
export default {
|
|
147
|
+
// method 必须是大写。可以直接返回数据
|
|
148
|
+
'GET /api/test': { hello: 'world' },
|
|
149
|
+
|
|
150
|
+
// 可以通过 express.requestHandler 处理请求。能实现自定义内容,发送文件等
|
|
151
|
+
'POST /api/test2': (req, res) => {
|
|
152
|
+
// 例如:将 body 内容返回
|
|
153
|
+
res.json(req.body)
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
// 可以通过第三方库生成 mock 数据
|
|
157
|
+
'POST /api/test3': Mock.mock({
|
|
158
|
+
// 属性 list 的值是一个数组,其中含有 1 到 10 个元素
|
|
159
|
+
'list|1-10': [
|
|
160
|
+
{
|
|
161
|
+
// 属性 id 是一个自增数,起始值为 1,每次增 1
|
|
162
|
+
'id|+1': 1,
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
}),
|
|
166
|
+
}
|
|
167
|
+
```
|
package/docs/override.md
CHANGED
|
@@ -46,6 +46,13 @@ export type Config = {
|
|
|
46
46
|
*/
|
|
47
47
|
proxy?: ProxyConfigArray
|
|
48
48
|
extraPostCSSPlugins?: any[]
|
|
49
|
+
/**
|
|
50
|
+
* 开启 mock 功能,会自动加载 mock 文件夹下的文件
|
|
51
|
+
*
|
|
52
|
+
* 默认情况下自动判断根目录是否存在 mock 文件夹,如果存在则开启 mock 功能。
|
|
53
|
+
* 如果设置 false,会关闭 mock 功能
|
|
54
|
+
*/
|
|
55
|
+
mock?: boolean
|
|
49
56
|
}
|
|
50
57
|
```
|
|
51
58
|
|
package/lib/config/paths.js
CHANGED
|
@@ -30,6 +30,7 @@ var paths = {
|
|
|
30
30
|
src: resolveApp("src"),
|
|
31
31
|
public: resolveApp("public"),
|
|
32
32
|
static: resolveApp("public", "static"),
|
|
33
|
-
theme: getExistPath(resolveApp("theme.json"), resolveApp("theme.js"))
|
|
33
|
+
theme: getExistPath(resolveApp("theme.json"), resolveApp("theme.js")),
|
|
34
|
+
mock: resolveApp("mock")
|
|
34
35
|
};
|
|
35
36
|
module.exports = paths;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express';
|
|
2
|
+
type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE';
|
|
3
|
+
type API = string;
|
|
4
|
+
export type MockConfig = Record<`${Method} ${API}`, string | number | null | undefined | boolean | Record<string, any> | RequestHandler>;
|
|
5
|
+
export declare function defineMock(config: MockConfig): MockConfig;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/config/plugins/mock-server/defineMock.ts
|
|
20
|
+
var defineMock_exports = {};
|
|
21
|
+
__export(defineMock_exports, {
|
|
22
|
+
defineMock: () => defineMock
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(defineMock_exports);
|
|
25
|
+
function defineMock(config) {
|
|
26
|
+
return config;
|
|
27
|
+
}
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
defineMock
|
|
31
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// src/config/plugins/mock-server/index.js
|
|
2
|
+
var paths = require("../../paths");
|
|
3
|
+
var globby = require("globby");
|
|
4
|
+
var chokidar = require("chokidar");
|
|
5
|
+
var debounce = require("lodash/debounce");
|
|
6
|
+
var chalk = require("chalk");
|
|
7
|
+
var fs = require("fs-extra");
|
|
8
|
+
var express = require("express");
|
|
9
|
+
var cookieParser = require("cookie-parser");
|
|
10
|
+
var mockCache = {};
|
|
11
|
+
var isSetup = false;
|
|
12
|
+
var setupMock = debounce(function setupMock2() {
|
|
13
|
+
mockCache = {};
|
|
14
|
+
const files = globby.sync(paths.mock);
|
|
15
|
+
if (isSetup) {
|
|
16
|
+
console.log(chalk.green("Mock files changed, reloaded"));
|
|
17
|
+
} else {
|
|
18
|
+
isSetup = true;
|
|
19
|
+
}
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
delete require.cache[require.resolve(file)];
|
|
22
|
+
try {
|
|
23
|
+
let mock = require(file);
|
|
24
|
+
mock = mock.default || mock;
|
|
25
|
+
mockCache = { ...mockCache, ...mock };
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.error(chalk.red(`Mock file ${file} error: ${e.message}`));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, 100);
|
|
31
|
+
function mockMiddlewave(req, res, next) {
|
|
32
|
+
const { method, path } = req;
|
|
33
|
+
const key = `${method.toUpperCase()} ${path}`;
|
|
34
|
+
const mock = mockCache[key];
|
|
35
|
+
if (mock) {
|
|
36
|
+
console.log(chalk.green(`Mock: ${key}`));
|
|
37
|
+
if (typeof mock === "function") {
|
|
38
|
+
mock(req, res, next);
|
|
39
|
+
} else {
|
|
40
|
+
res.json(mock);
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
next();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function setupMockServer(middelwaves, devServer) {
|
|
47
|
+
if (!fs.existsSync(paths.mock))
|
|
48
|
+
return;
|
|
49
|
+
require("@babel/register")({
|
|
50
|
+
presets: [["@babel/preset-env", { modules: "cjs" }], "@babel/preset-typescript"],
|
|
51
|
+
babelrc: false,
|
|
52
|
+
only: [/\/mock\//, /\/src\//],
|
|
53
|
+
extensions: [".js", ".ts"]
|
|
54
|
+
});
|
|
55
|
+
devServer.app.use(express.urlencoded({ extended: false }));
|
|
56
|
+
devServer.app.use(express.json());
|
|
57
|
+
devServer.app.use(cookieParser());
|
|
58
|
+
middelwaves.unshift({
|
|
59
|
+
name: "edu-scripts-mock-middelwave",
|
|
60
|
+
middleware: mockMiddlewave
|
|
61
|
+
});
|
|
62
|
+
console.log(
|
|
63
|
+
`<i> ${chalk.green.bold("[edu-scripts] Mock server created:")} ${chalk.cyan.bold(paths.mock)}`
|
|
64
|
+
);
|
|
65
|
+
chokidar.watch(paths.mock).on("all", setupMock);
|
|
66
|
+
return middelwaves;
|
|
67
|
+
}
|
|
68
|
+
module.exports = setupMockServer;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/config/webpackDevServerConfig.js
|
|
2
2
|
var WebpackDevServer = require("webpack-dev-server");
|
|
3
|
+
var setupMockServer = require("./plugins/mock-server");
|
|
3
4
|
module.exports = function getWebpackDevServerConfig(args, override) {
|
|
4
5
|
const host = process.env.HOST || "0.0.0.0";
|
|
5
6
|
const sockHost = process.env.WDS_SOCKET_HOST;
|
|
@@ -24,6 +25,12 @@ module.exports = function getWebpackDevServerConfig(args, override) {
|
|
|
24
25
|
"Access-Control-Allow-Methods": "*",
|
|
25
26
|
"Access-Control-Allow-Headers": "*"
|
|
26
27
|
},
|
|
28
|
+
setupMiddlewares: (middlewares, devServer2) => {
|
|
29
|
+
if (override.mock !== false) {
|
|
30
|
+
setupMockServer(middlewares, devServer2);
|
|
31
|
+
}
|
|
32
|
+
return middlewares;
|
|
33
|
+
},
|
|
27
34
|
proxy: [
|
|
28
35
|
...override.proxy,
|
|
29
36
|
{
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -19,11 +19,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
// src/index.ts
|
|
20
20
|
var src_exports = {};
|
|
21
21
|
__export(src_exports, {
|
|
22
|
-
defineConfig: () => import_defineConfig.defineConfig
|
|
22
|
+
defineConfig: () => import_defineConfig.defineConfig,
|
|
23
|
+
defineMock: () => import_defineMock.defineMock
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(src_exports);
|
|
25
26
|
var import_defineConfig = require("./utils/defineConfig");
|
|
27
|
+
var import_defineMock = require("./config/plugins/mock-server/defineMock");
|
|
26
28
|
// Annotate the CommonJS export names for ESM import in node:
|
|
27
29
|
0 && (module.exports = {
|
|
28
|
-
defineConfig
|
|
30
|
+
defineConfig,
|
|
31
|
+
defineMock
|
|
29
32
|
});
|
|
@@ -55,5 +55,12 @@ export type Config = {
|
|
|
55
55
|
*/
|
|
56
56
|
proxy?: ProxyConfigArray;
|
|
57
57
|
extraPostCSSPlugins?: any[];
|
|
58
|
+
/**
|
|
59
|
+
* 开启 mock 功能,会自动加载 mock 文件夹下的文件
|
|
60
|
+
*
|
|
61
|
+
* 默认情况下自动判断根目录是否存在 mock 文件夹,如果存在则开启 mock 功能。
|
|
62
|
+
* 如果设置 false,会关闭 mock 功能
|
|
63
|
+
*/
|
|
64
|
+
mock?: boolean;
|
|
58
65
|
};
|
|
59
66
|
export declare function defineConfig(config: Config): Config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qse/edu-scripts",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.10",
|
|
4
4
|
"author": "Kinoko",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "教育工程化基础框架",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"@babel/preset-env": "~7.18.10",
|
|
41
41
|
"@babel/preset-react": "~7.18.6",
|
|
42
42
|
"@babel/preset-typescript": "~7.18.6",
|
|
43
|
+
"@babel/register": "~7.18.0",
|
|
43
44
|
"@babel/runtime": "~7.18.9",
|
|
44
45
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
|
|
45
46
|
"@qse/ssh-sftp": "^1.0.0",
|
|
@@ -48,9 +49,12 @@
|
|
|
48
49
|
"babel-plugin-import": "^1.13.6",
|
|
49
50
|
"case-sensitive-paths-webpack-plugin": "^2.4.0",
|
|
50
51
|
"chalk": "^4.1.2",
|
|
52
|
+
"chokidar": "^3.5.3",
|
|
53
|
+
"cookie-parser": "^1.4.6",
|
|
51
54
|
"css-loader": "^6.8.1",
|
|
52
55
|
"cssnano": "^6.0.1",
|
|
53
56
|
"esbuild-loader": "^2.21.0",
|
|
57
|
+
"express": "^4.18.2",
|
|
54
58
|
"filesize": "^8.0.7",
|
|
55
59
|
"fs-extra": "^10.1.0",
|
|
56
60
|
"globby": "^11.1.0",
|
package/src/config/paths.js
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express'
|
|
2
|
+
type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE'
|
|
3
|
+
type API = string
|
|
4
|
+
|
|
5
|
+
export type MockConfig = Record<
|
|
6
|
+
`${Method} ${API}`,
|
|
7
|
+
string | number | null | undefined | boolean | Record<string, any> | RequestHandler
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
export function defineMock(config: MockConfig) {
|
|
11
|
+
return config
|
|
12
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const paths = require('../../paths')
|
|
2
|
+
const globby = require('globby')
|
|
3
|
+
const chokidar = require('chokidar')
|
|
4
|
+
const debounce = require('lodash/debounce')
|
|
5
|
+
const chalk = require('chalk')
|
|
6
|
+
const fs = require('fs-extra')
|
|
7
|
+
const express = require('express')
|
|
8
|
+
const cookieParser = require('cookie-parser')
|
|
9
|
+
let mockCache = {}
|
|
10
|
+
let isSetup = false
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {import('webpack-dev-server').Middleware[]} middelwaves
|
|
14
|
+
*/
|
|
15
|
+
const setupMock = debounce(function setupMock() {
|
|
16
|
+
// clean
|
|
17
|
+
mockCache = {}
|
|
18
|
+
|
|
19
|
+
const files = globby.sync(paths.mock)
|
|
20
|
+
|
|
21
|
+
if (isSetup) {
|
|
22
|
+
console.log(chalk.green('Mock files changed, reloaded'))
|
|
23
|
+
} else {
|
|
24
|
+
isSetup = true
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// setup
|
|
28
|
+
for (const file of files) {
|
|
29
|
+
delete require.cache[require.resolve(file)]
|
|
30
|
+
try {
|
|
31
|
+
let mock = require(file)
|
|
32
|
+
mock = mock.default || mock
|
|
33
|
+
mockCache = { ...mockCache, ...mock }
|
|
34
|
+
} catch (e) {
|
|
35
|
+
console.error(chalk.red(`Mock file ${file} error: ${e.message}`))
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}, 100)
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @type {import('express').RequestHandler}
|
|
42
|
+
*/
|
|
43
|
+
function mockMiddlewave(req, res, next) {
|
|
44
|
+
const { method, path } = req
|
|
45
|
+
const key = `${method.toUpperCase()} ${path}`
|
|
46
|
+
const mock = mockCache[key]
|
|
47
|
+
if (mock) {
|
|
48
|
+
console.log(chalk.green(`Mock: ${key}`))
|
|
49
|
+
if (typeof mock === 'function') {
|
|
50
|
+
mock(req, res, next)
|
|
51
|
+
} else {
|
|
52
|
+
res.json(mock)
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
next()
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @param {import('webpack-dev-server').Middleware[]} middelwaves
|
|
61
|
+
* @param {import('webpack-dev-server')} devServer
|
|
62
|
+
*/
|
|
63
|
+
function setupMockServer(middelwaves, devServer) {
|
|
64
|
+
if (!fs.existsSync(paths.mock)) return
|
|
65
|
+
|
|
66
|
+
require('@babel/register')({
|
|
67
|
+
presets: [['@babel/preset-env', { modules: 'cjs' }], '@babel/preset-typescript'],
|
|
68
|
+
babelrc: false,
|
|
69
|
+
only: [/\/mock\//, /\/src\//],
|
|
70
|
+
extensions: ['.js', '.ts'],
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
devServer.app.use(express.urlencoded({ extended: false }))
|
|
74
|
+
devServer.app.use(express.json())
|
|
75
|
+
devServer.app.use(cookieParser())
|
|
76
|
+
|
|
77
|
+
middelwaves.unshift({
|
|
78
|
+
name: 'edu-scripts-mock-middelwave',
|
|
79
|
+
middleware: mockMiddlewave,
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
console.log(
|
|
83
|
+
`<i> ${chalk.green.bold('[edu-scripts] Mock server created:')} ${chalk.cyan.bold(paths.mock)}`
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
chokidar.watch(paths.mock).on('all', setupMock)
|
|
87
|
+
|
|
88
|
+
return middelwaves
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
module.exports = setupMockServer
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const WebpackDevServer = require('webpack-dev-server')
|
|
2
|
+
const setupMockServer = require('./plugins/mock-server')
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @param {*} args
|
|
@@ -30,6 +31,13 @@ module.exports = function getWebpackDevServerConfig(args, override) {
|
|
|
30
31
|
'Access-Control-Allow-Methods': '*',
|
|
31
32
|
'Access-Control-Allow-Headers': '*',
|
|
32
33
|
},
|
|
34
|
+
setupMiddlewares: (middlewares, devServer) => {
|
|
35
|
+
if (override.mock !== false) {
|
|
36
|
+
setupMockServer(middlewares, devServer)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return middlewares
|
|
40
|
+
},
|
|
33
41
|
proxy: [
|
|
34
42
|
...override.proxy,
|
|
35
43
|
{
|
package/src/index.ts
CHANGED
|
@@ -57,6 +57,13 @@ export type Config = {
|
|
|
57
57
|
*/
|
|
58
58
|
proxy?: ProxyConfigArray
|
|
59
59
|
extraPostCSSPlugins?: any[]
|
|
60
|
+
/**
|
|
61
|
+
* 开启 mock 功能,会自动加载 mock 文件夹下的文件
|
|
62
|
+
*
|
|
63
|
+
* 默认情况下自动判断根目录是否存在 mock 文件夹,如果存在则开启 mock 功能。
|
|
64
|
+
* 如果设置 false,会关闭 mock 功能
|
|
65
|
+
*/
|
|
66
|
+
mock?: boolean
|
|
60
67
|
}
|
|
61
68
|
export function defineConfig(config: Config) {
|
|
62
69
|
return config
|