Options#
Configure @kubb/plugin-faker by passing these options to pluginFaker(), all of them optional.
| Option | Type | Default | Description |
|---|---|---|---|
output | Output | { path: 'mocks', barrel: { type: 'named' } } | Where the generated files are written and exported |
group | Group | — | Split output into per-tag or per-path folders |
dateParser | 'faker' | 'dayjs' | 'moment' | string | 'faker' | Library that formats string date and time fields |
regexGenerator | 'faker' | 'randexp' | 'faker' | Library that turns a regex pattern into a string |
locale | string | 'en' | Faker locale code for the generated values |
seed | number | number[] | — | Value passed to faker.seed(...) for deterministic output |
include | Array<Include> | — | Keep only operations that match |
exclude | Array<Exclude> | [] | Skip operations that match |
override | Array<Override> | [] | Apply different options per pattern |
resolver | ResolverPatch<ResolverFaker> | — | Customize generated names and file paths |
macros | Array<Macro> | — | Rewrite AST nodes before printing |
printer | { nodes?: PrinterFakerNodes } | — | Replace the handler for a schema type |
output#
Where the generated .ts files are written and how they are exported.
output.path#
Folder where the plugin writes its files, resolved against the global output.path on defineConfig, and defaulting to 'mocks'. To write everything to one file, set output.mode: 'file' and give path a file name with its extension, such as 'mocks.ts'.
output.mode#
How the plugin consolidates generated code. 'file' writes everything into a single file, where output.path must include the extension such as 'mocks.ts'. 'directory' writes one file per operation or schema under output.path. Leave it unset and Kubb reads output.path: a name with an extension means one file, anything else a directory.
Important
group works with the inferred directory mode, no mode needed. Set mode: 'directory' yourself only to override the inference, such as a directory name that carries a dot (path: 'clients.v2'). An explicit mode: 'file' still forbids group and stops the build with KUBB_INVALID_PLUGIN_OPTIONS, since a single file has nothing to group.
output.barrel#
output.banner#
output.footer#
group#
group.name#
Function (context: { group: string }) => string that turns a group key into the subdirectory name and the suffix for aggregate files. It defaults to camelCase(group) for tag groups, and for type: 'path' groups uses the path segment as-is.
dateParser#
Library used to format date and time fields represented as strings. Pick a value other than 'faker' when your project already uses a date library. Any library exporting a default function works, and Kubb adds the import for you.
A string date field renders differently per parser:
::: code-group
faker.date.anytime().toISOString().substring(0, 10)
dayjs(faker.date.anytime()).format('YYYY-MM-DD')
moment(faker.date.anytime()).format('YYYY-MM-DD')
:::
regexGenerator#
Library used to generate strings that satisfy a regex pattern keyword in the spec. The default 'faker' emits faker.helpers.fromRegExp(pattern) and needs no extra dependency. 'randexp' emits new RandExp(pattern).gen(), which supports a wider regex grammar but adds the randexp runtime dependency.
locale#
Faker locale code. It switches the named import to fakerXX from @faker-js/faker, so generated values reflect the target region. The default 'en' imports fakerEN, 'de' imports fakerDE, and 'de_AT' imports fakerDE_AT. See Faker.js localization for all locale codes.
seed#
Value passed to faker.seed(...) and emitted at the top of each generated factory, giving deterministic output across runs for snapshot tests and reproducible local data. Pass a single number or an array of numbers.
include#
exclude#
override#
resolver#
Changes how the plugin names generated files and symbols. Pass a partial patch: override only the members you want, and anything you omit keeps resolverFaker. See Override a resolver for the this context and how a patch layers over the default.
Tip
Inside a method this is the full resolver, so this.default.name(name) reuses the built-in casing.
type ResolverFakerPatch = {
name?(name: string): string
file?: {
baseName?(params: { name: string; extname: string }): string
path?(params: { baseName: string; output: Output }): string
}
param?: {
name?(node: OperationNode, param: ParameterNode): string // → 'showPetByIdPathPetId'
path?(node: OperationNode, param: ParameterNode): string // → 'createShowPetByIdPath'
query?(node: OperationNode, param: ParameterNode): string // → 'createListPetsQuery'
headers?(node: OperationNode, param: ParameterNode): string // → 'createDeletePetHeaders'
}
response?: {
status?(node: OperationNode, statusCode: StatusCode): string // → 'listPetsStatus200'
body?(node: OperationNode): string // → 'createPetsBody'
response?(node: OperationNode): string // → 'listPetsResponse'
responses?(node: OperationNode): string // → 'listPetsResponses'
}
}
macros#
printer#
Replaces the Faker node handler for a specific schema type, such as 'integer', 'date', or 'string'. Each handler returns the Faker expression as a string. Use this.transform to recurse into nested nodes and this.options to read printer options. The printer guide covers how overrides compose with macros.
import { pluginFaker } from '@kubb/plugin-faker'
pluginFaker({
printer: {
nodes: {
integer() {
return 'faker.number.float()'
},
},
},
})