Skip to main content

Configuration

Prisma Guard supports three formats for local configuration: a .js / .mjs file using a defineConfig helper, standard JSDoc exports, or a simple .json file. The configuration file must be named prisma-guard.config.(js|mjs|json).


Configuration Formats

This format provides full TypeScript IntelliSense and inline type check documentation:

// prisma-guard.config.js
import { defineConfig } from "@explita/prisma-guard";

export default defineConfig({
schemaDir: "./prisma",
outputDir: "./generated",
omitIds: true,
omitDates: true,
autoTrim: true,
});

2. JSDoc Type Hints

If you prefer not to import the defineConfig helper:

// prisma-guard.config.js
/** @type {import('@explita/prisma-guard').PrismaGuardConfig} */
export default {
schemaDir: "./prisma",
outputDir: "./generated",
};

3. JSON Configuration

A simple static JSON file prisma-guard.config.json:

{
"schemaDir": "./prisma",
"outputDir": "./generated",
"omitIds": true,
"omitDates": true,
"autoTrim": true
}

Config Property Reference

PropertyTypeDefaultDescription
schemaDirstring"./prisma"Path to the directory containing your .prisma schema files.
outputDirstring"node_modules/.prisma-guard"Target directory where generated Zod schemas are written. If you need to import schemas in your code, set this to a committed directory (e.g., ./src/generated). Note that internal runtime guard JSON metadata files are ALWAYS written to node_modules/.prisma-guard to keep your custom schema directory clean.
generateZodbooleantrueSet to false to skip generating Zod schemas, producing only runtime guard metadata.
omitIdsbooleanfalseWhen true, removes all @id primary key fields from public Zod schemas.
omitDatesbooleanfalseWhen true, removes auto-generated dates (e.g. createdAt, updatedAt) from public schemas.
zodOmitstring[][]Global list of field names to exclude from all generated Zod schemas (e.g. ["password"]).
autoTrimbooleantrueAutomatically appends .trim() to all inferred z.string() validations.
schemaSuffixstring"Schema"Suffix appended to generated model Zod schemas (e.g., UserSchema).
enumSuffixstring"Enum"Suffix appended to generated enum Zod schemas (e.g., RoleEnum).
useJsDocbooleanfalseUses standard JSDoc comments (/** */) instead of Zod's .describe() calls.
skipScalarbooleanfalseWhen true, skips generating intermediate database scalar schemas, producing only public API validation schemas.
defaultsOnOverridebooleanfalseWhen true, preserves Prisma @default() boundaries when using explicit @zod.z overrides.
prettierbooleantrueAutomatically runs Prettier formatting on all generated typescript code.
skipGitignorebooleanfalsePrevents automatically updating your .gitignore with the generated Zod directory.
debugbooleanfalseEnables verbose console logging output during schema building processes.
importSuffixstring""Appends a custom string suffix to relative import calls inside generated schemas (e.g. ".js" for ESM).
typeMapRecord<string, string>Custom Zod type mapping overrides (see below).
decoratorsRecord<string, any>Reusable named preset validation decorators (see Decorators guide).

Default Type Mappings

Prisma Guard maps Prisma schema scalars to Zod schemas using these default translations:

Prisma TypeDefault Zod Translation
Stringz.string().trim()
Intz.number()
BigIntz.string().trim()
Floatz.number()
Decimalz.union([z.number(), z.string()])
Booleanz.boolean()
DateTimez.coerce.date()
Jsonz.unknown()
Bytesz.instanceof(Buffer)

Overriding Default Mappings

You can override type translations globally inside the typeMap option of your config file:

export default defineConfig({
typeMap: {
// Map DateTime to ISO string validation instead of Date instances
DateTime: "z.string().datetime()",
},
});