Alias: blitz g
Use this command to scaffold all the boring code into your project.
Can generate pages, queries, mutations, and Prisma models. Support for custom templates based on the built-in templates is coming soon, so you can customize the generator to your app's needs.
blitz generate [type] [model]| Argument | Required | Description |
|---|---|---|
type | Yes | Type of files to generate. Options are listed below. |
model | Yes | The model name to generate files for * |
*
modelcan't be any of the following reserved words or their plurals:page,api,queryormutation.
Here's the matrix of which files are generated by which command:
| Type | Model | Queries | Mutations | Pages |
|---|---|---|---|---|
all | Yes | Yes | Yes | Yes |
resource | Yes | Yes | Yes | |
model | Yes | |||
crud | Yes | Yes | ||
queries | Yes | |||
query | Yes | |||
mutations | Yes | |||
mutation | Yes | |||
pages | Yes |
blitz generate all project will generate the following files:
app/pages/projects/[projectId]/edit.tsx
app/pages/projects/[projectId].tsx
app/pages/projects/index.tsx
app/pages/projects/new.tsx
app/projects/components/ProjectForm.tsx
app/projects/queries/getProject.ts
app/projects/queries/getProjects.ts
app/projects/mutations/createProject.ts
app/projects/mutations/deleteProject.ts
app/projects/mutations/updateProject.tsFor the above example, you can view the generated project index page at localhost:3000/projects
context/modelFor organization of files within your project, you can specify a nested folder path in which to generate the files.
blitz generate all admin/products
// Will generate files in `app/admin/products` instead of `app/products`Alternatively, you can provide the folder path via the --context or -c
options
--parentShorthand: -p
Used to specify that you want to generate files for a model which is a child of a parent model.
For example, say you have Project and Task models. A Task belongs to
a Project and Project has many Tasks. You would run this command:
blitz generate all task --parent projectwhich would generate the following files:
app/pages/projects/[projectId]/tasks/[taskId]/edit.tsx
app/pages/projects/[projectId]/tasks/[taskId].tsx
app/pages/projects/[projectId]/tasks/index.tsx
app/pages/projects/[projectId]/tasks/new.tsx
app/tasks/components/TaskForm.tsx
app/tasks/queries/getTask.ts
app/tasks/queries/getTasks.ts
app/tasks/mutations/createTask.ts
app/tasks/mutations/deleteTask.ts
app/tasks/mutations/updateTask.tsNote that this will not generate the relationships between the models, only the queries, mutations and pages.
--dry-runShorthand: -d
Displays what files would be generated but does not write the files to disk.
--envShorthand: -e
Allows you to set app environment name. Read more.
blitz generate all projectblitz generate mutations projectblitz generate crud admin/topsecret/filesblitz generate pages tasks --parent=projectsAll of the following commands will generate a model in your prisma schema file:
blitz generate allblitz generate resourceblitz generate modelModel fields can be added like this:
blitz generate model [fieldName]:[type]:[attribute]fieldName is the name of your database column and can be anything
belongsTo to add a model relationship, ex: belongsTo:usertype
Optional - defaults to string if not specified
Values: string, boolean, int, float, dateTime, json,
uuid, or a model name
foo:uuid is a shorthand syntax for foo:string:default=uuid
Add ? to make the type optional like this: string?
Note: If you use zsh in your terminal, you need to wrap a field
in quotes ("") to be correctly interpreted. For example:
"name:string?"
Add [] to make the type a list like: task[]
attribute is for adding a
prisma field attribute
default, unique= like:
default=false. That will set the default value to falseFor more details, see the docs on Prisma scalar types or the docs on Prisma relations.
> blitz generate model puppy isCute:boolean
> blitz generate model rocket launchedAt:dateTime
> blitz generate model task completed:boolean:default=falseblitz g model project task:Taskwill generate this:
model Project {
...
task Task
}blitz g model project tasks:Task[]will generate this:
model Project {
...
tasks Task[]
}blitz g model task belongsTo:projectwill generate this:
model Task {
...
project Project? @relation(fields: [projectId], references: [id])
projectId Int?
}blitz generate model task \
name \
completed:boolean:default=false \
belongsTo:project?will generate this:
model Task {
id Int @default(autoincrement()) @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
completed Boolean @default(false)
project Project? @relation(fields: [projectId], references: [id])
projectId Int?
}Running blitz generate model subsequent times will add fields to the
existing model. For example, the below command will add the subheading
field to the Task model.
blitz generate model task subheading:stringIf you want to use custom templates with blitz generate instead of the
default ones (e.g. with different styles), you can provide a path to the
local directory with template files. You can specify it in your
blitz.config.ts file. Read more here.