runtyping v4.7.0
runtyping
Generate runtypes from static types & JSON schema.
Instructions
Install
npm install runtypes
npm install -D runtyping
Use from the command line
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 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
Use from a script
Basic example:
import { Generator } from 'runtyping'
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())
Passing a custom tsconfig file
const generator = new Generator({
targetFile: 'src/runtypes.ts',
tsConfigFile: '/path/to/tsconfig.json',
})
Passing a custom ts-morph project (for the internal compiler)
(see generate.ts for the defaults)
import { Project } from 'ts-morph'
const generator = new Generator({
targetFile: 'src/runtypes.ts',
project: new Project({
// ...
}),
})
Contributing
- Install Yarn
- Link your workspace
yarn
- If using VSCode, be sure to accept the workspace TypeScript version
- If using another editor, install the Yarn SDK for it (and commit with your PR)
Thanks
Inspired by a gist by skurfuerst.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago