3.0.0 • Published 4 years ago

webpack-mock-service v3.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

webpack-mock-service

提供api mock服务,可配合webpack-dev-server使用,也可单独使用

V3版本开始不再需要提供入口文件,程序会自动导入mock文件夹下符合条件的文件

安装

$ npm install webpack-mock-service

使用

webpack.config.js

const path = require('path')
const MockService = require('webpack-mock-service').default

module.exports = {
  // ...
  devServer: {
    // ...
    before(app) {
      new MockService(app, {
        directory: path.join(process.cwd(), 'mock'), // default
        excludeApis: '/exclude',
        baseUrl: '/api'
      })
    },
    // '/api/exclude'和'/api/nomatch'将会被转发到'http://api.example'
    proxy: {
      '/api': {
        target: 'http://api.example',
        changeOrigin: true
      }
    }
  }
}

mock/index.js

module.exports = {
  'GET /test': {
    delay: 1000,
    response: {
      message: 'Response from mock service.'
    },
  },
  'POST /exclude': {
    response(req, res) {
      res.send('Response from mock service.')
    },
  },
}

参数说明

MockOptions

ParamTypeDefaultDescription
directorystringpath.join(process.cwd(), 'mock')mock文件夹绝对路径
useSubdirectoriesbooleantrue是否使用子目录
filterRegExp\|((filepath: string) => boolean)/\.js(on)?$/文件过滤器
watchPathsstring\|string[]-需要监测变化的文件/文件夹,作为第一个参数传递给chokidar.watch ,默认为directory的值
watchOptionsobject-作为第二个参数传递给chokidar.watch
middlewaresexpress.Handler[]-中间件
baseUrlstring/api基础路径
includeApisstring\|RegExp\|Array<string\|RegExp>*包含的api接口
excludeApisstring\|RegExp\|Array<string\|RegExp>-排除的api接口
fallthroughbooleantrue没有匹配到api接口时,是否把请求交给下一个中间件处理
updateDelaynumber2000文件改动后更新mock服务的延迟时间(ms),用于防抖。此外,很多编辑器在保存的时侯是先把原文件清空,再进行保存,因此会触发2次文件改变事件,设置该值也可以解决这个问题

MockResponse

KeyTypeDefaultDescription
responseunknown[]\|Record<string, unknown>\|express.Handler-响应数据或处理请求的函数
delaynumber-响应等候时间(ms)
statusnumber200HTTP状态码

热更新

默认情况下,监测到文件变化时只会清除改动文件本身的缓存。当这个文件不会影响到其他mock文件的输出时,这么做是没问题的。否则,务必使文件名以_开头,这样会清除所有已加载的mock文件的缓存,确保拿到最新数据。