Blitz 尚在 beat 阶段! 🎉 预计会在今年的 Q3 季度发布 1.0
Back to Documentation Menu

blitz generate

Topics

Jump to a Topic

别名:blitz g

使用此命令将所有枯燥的代码构建到你的项目中。

可以生成页面、queries、mutations 和 Prisma 模型。即将支持基于内置模板的自 定义模板,因此你可以根据应用的需要自定义生成器。

blitz generate [type] [model]
参数必须描述
type要生成的文件类型。下面列出了选项。
model要为其生成文件的模型名称

这是哪个文件由哪个命令生成的相关矩阵:

类型模型QueriesMutations页面
allYes
resourceYes
model
crud
queries
query
mutations
mutation
pages
Example Output

blitz generate all project 将生成如下文件:

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.ts

对于上面的例子,可以在 localhost:3000/projects 查看生成的项目索 引页面。

选项

context/model

为了组织项目中的文件,你可以指定一个嵌套文件夹路径来生成文件。

blitz generate all admin/products

// 将在 `app/admin/products` 生成文件而不是 `app/products`

或者,你可以通过 --context-c 选项提供文件夹路径。

--parent

简写:-p

用于指定你子模型的模型生成文件,其依赖的父模型。

例如,假设你有 ProjectTask 模型。一个 Task 属于一个 Project, 而 Project 有许多 Task。你将运行此命令。

blitz generate all task --parent project

这将生成如下文件:

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.ts
--dry-run

简写:-d

显示将生成哪些文件,但不将这些文件写入磁盘。

基础示例

blitz generate all project
blitz generate mutations project
blitz generate crud admin/topsecret/files
blitz generate pages tasks --parent=projects

模型生成

以下所有命令都将在你的 Prisma 模式文件中生成一个模型:

  • blitz generate all
  • blitz generate resource
  • blitz generate model

模型字段

模型字段可以被像如下这样天机:

blitz generate model [fieldName]:[type]:[attribute]
  • fieldName 是你的数据库列的名称,且可以是任何东西
    • 使用 belongsTo 添加模型关系,例如:belongsTo:user -type
    • 可选 - 如果未指定,则默认为 string
    • 值: stringbooleanintfloatdateTimejson 或模 型名称
    • 添加 ? 使类型可选,如下所示:string?
    • 添加 [] 使类型成为一个列表,如:task[]
  • attribute 用于添加 prisma 字段属性
    • 可选的
    • 支持:defaultunique
    • 如果属性接受一个参数,你可以用 = 包含它,例如: default=false 这会 将默认值设置为 false

更多详情,查看 Prisma scalar 类型的文档 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=false
有一个关系
blitz g model project task:Task

将生成:

model Project {
  ...
  task     Task
}
有多个关系
blitz g model project tasks:Task[]

将生成:

model Project {
  ...
  tasks     Task[]
}
属于关系
blitz g model task belongsTo:project

将生成:

model Task {
  ...
  project   Project? @relation(fields: [projectId], references: [id])
  projectId Int?
}
完整示例
blitz generate model task \
       name \
       completed:boolean:default=false \
       belongsTo:project?

将生成:

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?
}

更新一个模型

多次运行 blitz generate model 将向现有模型添加字段。例如,下面的命令将把 subheading 字段添加到 Task 模型中。

blitz generate model task subheading:string

Idea for improving this page? Edit it on GitHub.