title | sidebar_label |
---|---|
blitz generate |
blitz generate |
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 |
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 | |
crud |
Yes | Yes | ||
queries |
Yes | |||
query |
Yes | |||
mutations |
Yes | |||
pages |
Yes |
blitz generate all project
will generate the following files:
app/projects/pages/projects/[projectId]/edit.tsx
app/projects/pages/projects/[projectId].tsx
app/projects/pages/projects/index.tsx
app/projects/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.ts
For the above example, you can view the generated project index page at localhost:3000/projects
For 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
Shorthand: -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 project
which would generate the following files:
app/tasks/pages/projects/[projectId]/tasks/[taskId]/edit.tsx
app/tasks/pages/projects/[projectId]/tasks/[taskId].tsx
app/tasks/pages/projects/[projectId]/tasks/index.tsx
app/tasks/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.ts
Shorthand: -d
Displays what files would be generated but does not write the files to disk.
blitz generate all project
blitz generate mutations project
blitz generate crud admin/topsecret/files
blitz generate pages tasks --parent=projects
All of the following commands will generate a model in your prisma schema file:
blitz generate all
blitz generate resource
blitz generate model
Model fields can be added like this:
blitz generate model [fieldName]:[type]:[attribute]
fieldName
is the name of your database column and can be anythingtype
can be anything supported by Prisma including scalar types and relation types- Optional - defaults to
string
if not specified - Add
?
to make the type optional like this:string?
- Optional - defaults to
attribute
is for adding a prisma field attribute- Optional
- Supported:
default
,unique
- If the attribute takes an argument, you can include it in brackets like this:
default[false]
That will set the default value tofalse
blitz g model project name tasks:Task[]
will generate this in prisma.schema
:
model Project {
id Int @default(autoincrement()) @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
tasks Task[]
}
blitz generate model task \
name \
completed:boolean:default[false] \
belongsTo:project?
will generate this in prisma.schema
:
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?
}