该plugin基于webpack devServer和mockjs实现本地mock
npm install @xxx/mock-plugin --save-dev
使用该插件需要真对不同的情况进行使用,因为不同的脚手架使用WebpackDevServer的方式不同,所以没有一个完全契合的方案来使用
1、普通webpack配置
这种适用于普通的
const MockPlugin = require('@xxx/webpack-mock-plugin');
module.exports = {
plugins: [
new MockPlugin({
prefix: '/mock/api'
})
]
};
2、用react-creat-app创建的项目 由于用cra创建的项目,webpack devServer是它自己的配置,用户通过配置webpack的devServer它会忽略,所以不能像普通的配置那样配置。你需要eject吐出配置,然后在scripts/start.js中配置。找到serverConfig对象,然后如下配置。
const MockPlugin = require('@xxx/webpack-mock-plugin');
// Serve webpack assets generated by the compiler over a web server.
const serverConfig = createDevServerConfig(
proxyConfig,
urls.lanUrlForConfig
);
new MockPlugin({
prefix: '/mock/api',
config: serverConfig
})
3、用customize-cra创建的项目
用customize-cra创建的项目需要在config-overrides.js中进行配置
const {
override,
overrideDevServer
} = require('customize-cra');
const MockPlugin = require('@xxx/webpack-mock-plugin');
module.exports = {
webpack: override(
devServer: overrideDevServer(
(config) => {
new MockPlugin({
prefix: '/mock/api',
config
})
return config
}
)
}
4、用vue-cli创建的项目
用vue-cli创建的项目,可以通过vue.config.js配置
const MockPlugin = require('@xxx/webpack-mock-plugin');
module.exports = {
devServer: {
before(app) {
new MockPlugin({
prefix: '/mock/api',
app
})
}
}
};
5、其他框架,暂时....不支持
项目根目录下创建mock文件夹,里面就是mock的json文件,文件路径就是请求路径。
比如有/mock/user/user_info.json
{
"code": 0,
"msg": "success",
"data": {
"username": "@name()",
"age": 28,
"email": "@email",
"permissions|1-9": [
"affiliate-r",
"affiliate-w",
"campaign-r",
"report-r",
"logs-r",
"permission-r",
"campaign-w",
"permission-w"
],
"role_type": 1
}
}
则你的请求url为/mock/api/user/user_info
关于mock模拟数据的语法,可以点击这里了解更多。
1、如果你配置了webpack devServer的代理,又设置了mock,而且他们前缀一样,则会导致mock请求无效。
2、更新mock json文件可以不用重启,如果是新增mock json文件,需要重启请求才有效。