Stackbit schema tools
npm install @stackbit/schema
Takes raw models
map as defined by stackbit.yaml format and returns an array of sanitized models.
# part of stackbit.yaml
models:
post:
type: page
layout: post
folder: blog
fields:
- type: string
name: title
label: Title
required: true
# ...fields
person:
type: data
label: Person
folder: authors
fields:
# ...fields
const stackbitYaml = await parseFile('path/to/stackbit.yaml');
const models = loadModels(stackbitYaml.models);
The returned models
is a sanitized array of models:
[
{
"name": "post",
"type": "page",
"label": "Post",
"fieldLabel": "title",
"layout": "post",
"folder": "blog",
"fields": [ /* fields */ ]
},
{
"name": "person",
"type": "data",
"label": "Person",
"folder": "authors",
"fields": [ /* fields */ ]
}
]
Takes a query object representing a loaded content file and models
array returned by loadModels()
and returns a model matching the query.
const model = getModelByQuery({ filePath: 'authors/john-doe.json' }, models);
// model => model for "person" type