跳转到内容

pluginConfig

type: MockServerPluginOptions

vite.config.ts
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[]

  • 默认值:相对于 cwd

    ts
    ['mock/**/*.mock.{js,ts,cjs,mjs,json,json5}']

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

exclude

  • 类型string | string[]

  • 默认值:相对于 cwd

    ts
    ['**/node_modules/**', '**/test/**', '**/cypress/**', 'src/**', '**/.vscode/**', '**/.git/**', '**/dist/**']

配置读取 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[] }
}

基于 MIT 许可发布