Generate zod from static types & JSON schema.
npm install zod
npm install -D @runtyping/zod
-
Create a file, in the root of your project, called "runtyping.yml".
# runtyping.yml targetFile: ./src/other-runtypes.ts # The file to create runtypeFormat: {type}Rt # Optional: use a custom name format for the created runtype transformers: # Optional: specify a transformer for a type [TYPENAME]: file: /path/to/transformer export: exportNameOfTranformer typeFormat: {type}Type # Optional: use a custom name format for the created type sourceTypes: exportStaticType: true # Optional: export static types as well (true by default) file: ./src/types.ts # The file where your type lives type: Foo # The type you want to convert to a runtype
You can also specify a list of target files, if you want to create more than one:
# runtyping.yml - targetFile: ./src/other-runtypes.ts sourceTypes: file: ./src/types.ts type: Foo - targetFile: ./src/runtypes.ts sourceTypes: # Source types can also be a list - file: ./src/types.ts type: Foo - file: ./json/my-json-schema.json # You can even use JSON schema files!! type: [ExampleType, AnotherExampleType] # You may use an array of types
-
Then run:
npx runtyping
Basic example:
import { Generator } from '@runtyping/zod'
const generator = new Generator({
targetFile: './src/runtypes.ts',
// optional: runtypeFormat / typeFormat (see above)
})
generator
.generate([
{ file: './src/types.ts', type: 'Foo' },
{ file: 'json/my-json-schema.json', type: 'ExampleType' },
])
.then((file) => file.save())
import { Generator } from '@runtyping/zod'
const generator = new Generator({
targetFile: './src/runtypes.ts',
tsConfigFile: '/path/to/tsconfig.json',
})
(see generate.ts for the defaults)
import { Project } from 'ts-morph'
import { Generator } from '@runtyping/zod'
const generator = new Generator({
targetFile: './src/runtypes.ts',
project: new Project({
// ...
}),
})