Skip to content

pluginConfig

type: MockServerPluginOptions

ts
import { defineConfig } from 'vite'
import mockDevServerPlugin from 'vite-plugin-mock-dev-server'

export default defineConfig({
  plugins: [
    mockDevServerPlugin({
      prefix: [],
      wsPrefix: [],
      include: ['mock/**/*.mock.{js,ts,cjs,mjs,json,json5}'],
      exclude: '',
      log: 'info',
      reload: false,
      cors: true,
      formidableOptions: undefined,
      cookiesOptions: undefined,
      bodyParserOptions: undefined,
      priority: undefined
    }),
  ]
})

Type:

ts
interface MockServerPluginOptions {
  prefix?: string | string[]
  wsPrefix?: string | string[]
  include?: string | string[]
  exclude?: string | string[]
  reload?: boolean
  log?: boolean | 'debug' | 'info' | 'warn' | 'error' | 'silent'
  cors?: boolean | CorsOptions
  formidableOptions?: formidable.Options
  cookiesOptions?: Cookies.Option
  bodyParserOptions?: coBody.Options & {
    formLimit?: string | number
    jsonLimit?: string | number
    textLimit?: string | number
  }
  build?: boolean | ServerBuildOption
  priority?: MockMatchPriority
}

prefix

类型string | string[]

默认值[]

为 mock 服务配置 路径匹配规则,任何请求路径以 prefix 开头的都将被拦截代理。 如果 prefix 以 ^ 开头,将被识别为 RegExp

wsPrefix

类型string | string[]

默认值[]

配置 webSocket 服务 匹配规则。任何请求路径以 wsPrefix 值开头的 ws/wss 协议请求,将被代理到对应的目标。 如果wsPrefix值以 ^ 开头,将被识别为 RegExp。

与 http mock 默认使用 viteConfig.server.proxy 不同的是,websocket mock 不会使用 viteConfig.server.proxy 中的 ws 相关的配置,且配置在 wsPrefix 中的规则,不能同时配置在 viteConfig.server.proxy中,因为会导致在 vite 在启动服务时产生冲突,因为不能对同一个请求实现多个的 WebSocketServer实例。

该冲突既不是 vite 的问题,也不是插件的问题,这属于合理的错误类型。在进行 WebSocket MockWebSocket Proxy 切换时,请注意配置不要出现重复导致冲突。

cwd

类型string

默认值process.cwd()

配置 includeexclude 的匹配上下文

include

类型string | string[]

默认值['mock/**/*.mock.{js,ts,cjs,mjs,json,json5}'] 相对于 cwd

配置读取 mock文件,可以是一个 目录,glob,或者一个数组

exclude

类型string | string[]

默认值['**/node_modules/**','**/test/**','**/cypress/**','src/**','**/.vscode/**','**/.git/**','**/dist/**'] 相对于 cwd

配置读取 mock文件时,需要排除的文件, 可以是一个 目录、glob、或者一个数组

reload

类型boolean

默认值false

mock资源热更新时,仅更新了数据内容,但是默认不重新刷新页面。

当你希望每次修改mock文件都刷新页面时,可以打开此选项。

log

类型boolean | 'debug' | 'info' | 'warn' | 'error' | 'silent'

默认值info

开启接口日志打印,或 配置日志级别。

formidableOptions

类型formidable.Options

默认值undefined

配置 formidable。 用于处理对 content-typemultipart 的类型。

详细配置查看 formidable

文件上传资源默认临时存放于 os.tmpdir() 目录。

cors

类型boolean | CorsOptions

默认值true

开启 CORS 或 配置 CORS 选项。

通常你不需要配置它,默认从 vite server.cors 继承配置。

cookiesOptions

类型Cookies.Option

默认值undefined

配置 cookies

详细配置信息查看 cookies

bodyParserOptions

类型coBody.Options & { formLimit?: string | number, jsonLimit?: string | number, textLimit?: string | number }

默认值undefined

配置 co-body

详细配置信息查看 co-body

build

类型boolean | ServerBuildOption

默认值false

当需要构建一个可独立部署的mock server 时,可启用此配置。

当设置为 true 是,默认配置为 { serverPort: 8080, dist: 'mockServer' }

ts
export interface ServerBuildOption {
  /**
   * 服务启动端口
   * @default 8080
   */
  serverPort?: number
  /**
   * 服务应用输出目录
   * @default 'mockServer'
   */
  dist?: string

  /**
   * 服务应用日志级别
   * @default 'error'
   */
  log?: LogLevel
}

priority

类型MockMatchPriority

默认值: undefined

自定义 路径匹配规则优先级。

ts
interface MockMatchPriority {
  /**
   * 匹配规则优先级, 全局生效。
   * 声明在该选项中的规则将优先于默认规则生效。
   * 规则在数组越靠前的位置,优先级越高。
   *
   * 不要在此选项中声明通用性的规则,比如 `/api/(.*)`,这将导致后续的规则无法生效。
   * 除非你明确知道规则的优先级,否则大多数情况下都不需要配置该选项。
   * @default []
   */
  global?: string[]
  /**
   * 对于一些特殊情况,需要调整部分规则的优先级,可以使用此选项。
   * 比如一个请求同时命中了规则 A 和 B,且 A 比 B 优先级高, 但期望规则 B 生效时。
   */
  special?: MockMatchSpecialPriority
}

interface MockMatchSpecialPriority {
  /**
   * 当 A 与 B或 C 同时满足匹配,且 B或 C在排序首位时,将A插入到首位。
   * when 选项用于进一步约束该优先级调整仅针对哪些请求有效。
   * @example
   * ```ts
   * {
   *   A: ['B', 'C'],
   *   A: { rules: ['B', 'C'], when: ['/api/a/b/c'] }
   * }
   * ```
   */
  [key: string]: string[] | { rules: string[], when: string[] }
}

Released under the MIT License.