Skip to content
MSW

MSW

Officialv5.0.11

@kubb/plugin-msw

kubb add plugin-msw

Options

Pass these options to pluginMsw(). Shared options link to Shared plugin options.

Options overview

OptionPurposeDefault
outputWhere files are written: path, mode, barrel, banner, footer.{ path: 'handlers', barrel: { type: 'named' } }
groupSplit output by tag or path: type, name.None
baseURLBase URL prepended to every handler's request.None
handlersEmit a handlers.ts that re-exports every handler.false
parserSource of the response body each handler returns.'data'
includeKeep only operations that match.None
excludeSkip operations that match.[]
overrideApply different options per pattern.[]
resolverCustomize generated names and file paths.resolverMsw
macrosRewrite AST nodes before printing.[]

Option details

baseURL

Base URL prepended to every handler's request. When omitted, no host is prepended and each handler matches the operation's relative path from the spec. Set it to point at a different environment than the spec.

Typestring
Requiredfalse

handlers

Emits a handlers.ts file that re-exports every generated handler in operation order. Spread it into your MSW setupServer(...handlers) or setupWorker(...handlers) call.

Typeboolean
Requiredfalse
Defaultfalse
gen/handlers.ts
import { getPetHandler } from './getPetHandler'
import { addPetHandler } from './addPetHandler'

export const handlers = [getPetHandler(), addPetHandler()] as const

parser

Source of the response body each handler returns.

Type'data' | 'faker'
Requiredfalse
Default'data'
'data'
Default value. Returns the data you pass to the handler, typed with the @kubb/plugin-ts types. The handler uses new Response(JSON.stringify(data), ...).
'faker'
Falls back to a value generated by @kubb/plugin-faker when data is missing or falsy, such as 0, false, or ''. Register pluginFaker() alongside this plugin.
'faker'
export function getPetHandler(data?: GetPetQueryResponse | ((info: Parameters<Parameters<typeof http.get>[1]>[0]) => Response | Promise<Response>)) {
  return http.get('/pet/:petId', function handler(info) {
    if (typeof data === 'function') return data(info)

    return new Response(JSON.stringify(data || createGetPetQueryResponse(data)), {
      status: 200,
      headers: { 'Content-Type': 'application/json' },
    })
  })
}

resolver

Overrides generated file and symbol names. Omitted members keep resolverMsw. The shared members (name, file, imports) and the this context are described under resolver.

TypeResolverPatch<ResolverMsw>
Requiredfalse
Partial override
type ResolverMswPatch = {
  name?(name: string): string
  file?: {
    baseName?(params: { name: string; extname: string }): string
    path?(params: { baseName: string; output: Output }): string
  }
  imports?(options: ResolveImportsOptions): Array<ImportNode>
  handler?: {
    name?(node: OperationNode): string  // → 'getPetHandler'
    listName?(): string                 // → 'handlers'
  }
}