利用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 mockerbefore(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