利用webpack实现mock api,需要用到插件webpack-api-mocker
,webpack-api-mocker
已经改名成mocker-api
请参考最新的 https://www.npmjs.com/package/mocker-api
https://www.npmjs.com/package/webpack-api-mocker
npm install webpack-api-mocker --save-dev
build/webpack.dev.conf.js
中引入webpack-api-mocker
const apiMocker = require('webpack-api-mocker');
在devServer
参数中设置before
,我们把api接口定义在mock目录下的proxy
...
devServer: {
// 内容路径
contentBase: path.join(__dirname, "../src"),
// gzip压缩
compress: true,
// 端口
port: 9000,
historyApiFallback: true,// 如果为 true ,页面出错不会弹出 404 页面
// api mocker
before(app) {
apiMocker(app, path.resolve(__dirname, "../mock/proxy"))
}
},
...
注意: apiMocker第二个参数,必须是字符串路径,即上面
path.resolve(__dirname, "../mock/proxy")
这一串
附: proxy
代码,我们可以把不同的API通过文件拆开来
利用_proxy
参数,可以代理相关的请求接口。如我们本地开发,但数据需要真实环境的数据,这个真实环境可能是测试服务器,可能是后台开发自己的电脑,这对真实场景的调试是非常有用的
貌似_proxy
的代理优先级不生效,所以这里通过环境变量process.env.proxy
设置不同的proxy配置
mock/proxy.js
const USER = require("./user");
const _proxy = process.env.proxy == "true";
console.log(_proxy);
let proxy = {};
if (_proxy) {
proxy = {
/**
* 代理远程服务器联调
*/
_proxy: {
proxy: {
// "/repos/*": "https://api.github.com/",
// "/:owner/:repo/raw/:ref/*": "http://127.0.0.1:2018"
"/weixin/*": "http://172.20.21.21:8086/"
},
changeHost: true
}
};
} else {
proxy = {
/**
* 用户相关api
*/
...USER
};
}
module.exports = proxy;
mock/user.js
const USER = {
'GET /weixin/user': { id: 1, username: 'kenny', sex: 6 }
}
module.exports = USER;
dev
,proxy
本地开发,启用npm run dev
需要测试真实数据时,启用npm run proxy
"scripts": {
"dev": "cross-env proxy=false webpack-dev-server --hot --color --config build/webpack.dev.conf.js",
"proxy": "cross-env proxy=true webpack-dev-server --hot --color --config build/webpack.dev.conf.js",
"build": "webpack --config build/webpack.prod.conf.js",
"server": "http-server ./dist -a 127.0.0.1 -p 9000 --proxy http://172.88.88.21:8086/"
},
npm run dev
把项目跑起来,测试下api是否成功测试成功如下图
webpack devServer/before : https://webpack.docschina.org/configuration/dev-server/#devserver-before
webpack-api-mocker: https://www.npmjs.com/package/webpack-api-mocker
找一个mock缩略图发现一组很有意思的图片:
公司新入手的Macbook m1最新款,使用NPM RUN DEV,你都可以去喝杯咖啡再回来,再看还在 build,怎么解决?
如何在VUE项目中添加stylelint,检查css,scss,less的语法问题,保证团队代码的规范统一
默认情况下,webpack-dev-server只可使用localhost或127.0.0.1访问,用局域网IP访问不了
mvvm项目总会有一些静态文件,如静态合同、协议等等,如何通过webpack来原样复制?
webpack最小化打包lodash插件,如果全量打包的话,lodash会非常大
vue2.0 项目,利用webpack搭建mock api服务,用于本地调试数据
webpack打包,报"WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB)",记录一下
webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个bundle