Back to results
adamkrupke/contentful-to-zod(opens in a new tab)
Language: TypeScript
- stars
- 2
- watchers
- 1
- forks
- 2
- open issues
- 7
- Last updated
- 03/12/2026
Language: TypeScript
🔄 Generate type-safe Zod schemas from your Contentful content types with ease!
By validating our contentful data with zod, we can catch any unhandled schema changes and protect ourselves from unexpected runtime errors.
# npm npm install -D contentful-to-zod # yarn yarn add -D contentful-to-zod # pnpm pnpm install -D contentful-to-zod
contentful space export \ --space-id <SPACE_ID> \ --management-token <MANAGEMENT_TOKEN> \ --content-file ./contentful.json \ --skip-content
npx contentful-to-zod --input ./contentful.json --output ./schemas.ts
Browse a sample output here
You can customize the generator behavior by creating a contentful-to-zod.config.js or contentful-to-zod.config.mjs file in your project root:
// contentful-to-zod.config.js /** @type {import('contentful-to-zod').ContentfulToZodConfig} */ export default { // Generate flat schemas without references flat: true, // Allow unknown keys in objects passthrough: true, // Throw error for unsupported types abortOnUnknown: false, // Custom naming functions toTypeName: (entity) => `${entity}Type`, toSchemaName: (entity) => `${entity}Schema`, };
The configuration file supports all generator options. CLI arguments take precedence over config file options.
import contentful from "contentful"; import { pageSchema } from "./schemas"; const client = contentful.createClient({ // ... }); const response = await client.getEntries({ content_type: "page", }); const pages = response.items.map((item) => pageSchema.parse(item));
| Option | Description | Default |
|---|---|---|
-i, --input <path> |
Path to Contentful schema JSON file | Required |
-o, --output <path> |
Output path for generated TypeScript file | Required |
--passthrough |
Allow unknown keys in objects | false |
-a, --abort-on-unknown |
Throw error for unsupported types instead of using z.unknown() | false |
-f, --flat |
Generate flat schemas without references | false |
MIT
npm version major|minor|patch
git push origin main
sh ./scripts/release.sh