十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Prisma CLI 指南:使用 `prisma init` 快速搭建数据库服务与 GraphQL 项目骨架

Prisma CLI 指南:使用 `prisma init` 快速搭建数据库服务与 GraphQL 项目骨架 后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载prisma init是 Prisma CLI 中用于初始化新数据库服务Prisma service的核心命令它会在本地生成prisma.yml、数据模型datamodel与 GraphQL 配置文件并通过交互式向导或--boilerplate参数帮助你选择纯数据库服务或完整 GraphQL 应用两种起步模板。本文以 Prisma 1.x 仓库中的 01-prisma-init.md 为骨架结合 CLI 的 init.ts 实现源码完整讲解该命令的用法、生成文件、交互流程与常见后续步骤让读者能够据此从零初始化一个可部署的 Prisma 服务。命令概述prisma init做了什么prisma init的作用是为一个新的 Prisma 数据库服务创建本地文件结构。如果执行命令时没有提供--boilerplate选项命令会触发一个交互式向导让你选择一种预配置的服务模板主要有两大选项Minimal setup: database-only最小化仅数据库只提供一个纯 Prisma 数据库服务所需的文件GraphQL server/fullstack boilerplateGraphQL 服务/全栈模板基于 GraphQL boilerplates 搭建一个功能完整的 GraphQL 应用骨架可以是仅后端也可以是全栈。无论选择哪种方式初始化出的 Prisma 服务至少都会包含以下文件文件用途prisma.yml服务定义文件service definition声明 endpoint、datamodel 等核心配置datamodel.graphql/datamodel.prisma数据模型定义文件data model使用 GraphQL SDL 语法描述数据库模型.graphqlconfig遵循标准化graphql-config格式的配置文件供 GraphQL Playground 等各类工具使用版本说明1.3 版本文档中数据模型文件写作datamodel.graphql而当前仓库 CLI 实现见 boilerplate 目录实际生成的是datamodel.prisma二者均为 GraphQL SDL 格式命名差异不影响用法。如果你在命令中传入一个目录名作为参数生成的文件会被放入以该名字新建的目录中否则生成在当前目录。用法与命令行参数命令的基本用法如下prisma init DIRNAME [flags]其中DIRNAME为可选的目录名参数。命令支持以下 flag-b, --boilerplate BOILERPLATE Full URL or repo shorthand (e.g. owner/repo) to boilerplate GitHub repository即-b, --boilerplate BOILERPLATE指定模板对应的 GitHub 仓库可以传完整 URL也可以传仓库简写例如owner/repo。从源码看Init命令init.ts还定义了另一个非文档化的 flag-e, --endpoint ENDPOINT用于直接指定初始服务 endpoint从而跳过交互式向导详见下文非交互式初始化小节static args [ { name: dirName, description: Folder to initialize in (optional), }, ] static flags: Flags { endpoint: flags.string({ char: e, description: Initial service endpoint (optional), required: false, }), }三个典型使用示例在当前目录创建数据库服务文件结构prisma init不传目录名文件直接生成在当前目录下。在指定目录database中创建文件结构prisma init database命令会在当前目录下新建database/文件夹并把生成的文件放入其中。基于node-basic模板初始化 GraphQL 服务器prisma init node-app --boilerplate node-basic--boilerplate node-basic使用仓库简写语法CLI 会从对应的 GitHub 仓库拉取node-basic模板在node-app/目录中搭建一个基于 Node.js 的基础 GraphQL 服务器骨架。初始化后生成的目录结构与文件解析无论走交互式向导还是非交互模式init最终都会向目标目录写入文件。从 init.ts 的createdFiles输出逻辑可以看出典型的生成结果包括prisma.yml Prisma service definition datamodel.prisma GraphQL SDL-based datamodel (foundation for database) docker-compose.yml Docker configuration file # 仅本地集群时生成 .env Env file including PRISMA_API_MANAGEMENT_SECRET # 设置了管理密钥时生成其中最关键的两个文件内容如下。prisma.yml服务定义交互式流程生成的prisma.yml形如endpoint: https://eu1.prisma.sh/myworkspace/service-name/stage datamodel: datamodel.prismaendpoint服务部署的地址格式为https://cluster/workspace/service/stage。在 PrismaDefinition.ts 中CLI 会通过parseEndpoint从 endpoint 中解析出 cluster、service、stage 等组成部分并校验 endpoint 必须以http://或https://开头。datamodel数据模型文件的相对路径。源码支持单个路径也支持通过数组配置多个数据模型文件见 PrismaDefinition.ts。如果选择的是 MongoDBprisma.yml还会额外追加一行databaseType: documentendpoint: ... datamodel: datamodel.prisma databaseType: document如果交互式向导中选择了代码生成器generator还会追加generate段。从源码的getGeneratorConfiginit.ts可以看到生成配置的结构generate: - generator: generator-name output: ./generated/prisma-client/datamodel.prisma初始数据模型当前仓库内置的 datamodel.prisma 模板非常简洁type User { id: ID! id name: String! }它定义了一个带id主键的User模型后续你可以在这个基础上扩展更多字段与关系可参考 数据建模文档.md)。交互式向导从 endpoint 到 docker-compose 的完整流程当没有提供--endpoint时命令会走完整交互流程。核心逻辑在 init.ts 中调用this.env.fetchClusters()拉取可用集群列表构造EndpointDialog实例shouldAskForGenerator: true引导用户配置 endpoint、数据库类型、是否使用已有数据库、是否本地部署、是否选择代码生成器等根据结果组装prisma.yml内容并写入写入datamodel.prisma内容是对话框返回的results.datamodel若选择本地集群且需要 docker-compose写入 docker-compose.yml 模板若设置了管理密钥management secret写入.env文件内容为PRISMA_MANAGEMENT_API_SECRETsecret若选择了 generator自动执行prisma generate生成客户端代码。交互流程在 init.test.ts 中通过 mock inquirer 有对应测试覆盖测试场景包括选择local本地集群以及选择Use existing databasePostgreSQL 类型两种情况可用于理解对话框可能出现的选项。本地模式下的 docker-compose.yml当选择本地集群时命令会写入一个内置的 docker-compose.yml它定义了prisma-dbMySQL 5.7 数据库容器prisma-databaseprismagraphql/prisma:1.1服务器容器通过环境变量接收SQL_CLIENT_*、SQL_INTERNAL_*、PORT等配置并将 MySQL 作为底层存储。因此本地模式的后续步骤通常是docker-compose up -d启动 Prisma 服务器再执行prisma1 deploy部署服务。非交互式初始化--endpoint快速模式源码中还存在一条绕过交互向导的快捷路径init.ts当通过-e/--endpoint提供 endpoint 时CLI 会直接创建目标目录根据当前服务的数据库类型document类型使用datamodel-mongo.prisma模板否则使用默认 datamodel.prisma写入数据模型文件写入极简的prisma.ymlendpoint: endpoint datamodel: datamodel.prisma该模式适合在脚本或 CI 中自动化初始化场景。冲突检测与安全机制init在写入文件前会检查目标目录如果目录中已存在prisma.yml或datamodel.prisma会输出冲突文件列表并终止exit code 1提示换一个目录名或先清理文件见 init.ts。仓库中还有一份被注释掉的旧实现 old.ts其中曾提供--force与--copyflag可作历史参考但当前版本以新实现为准。初始化完成后的标准操作步骤无论是哪种模式命令结束时都会打印Next steps清单汇总如下若指定了目录名cd dir进入项目目录若为本地集群模式运行docker-compose up -d启动本地 Prisma 服务器若系统未安装 docker-composeCLI 会提示安装指引运行prisma1 deploy部署你的 Prisma 服务部署命令详见 02-prisma-deploy.md若选择了 generatorprisma generate已在初始化阶段自动执行客户端代码输出到./generated/prisma-client/。完成上述步骤后你的 Prisma 数据库服务即已就绪可以在此基础上继续编写数据模型、编写 GraphQL 解析器或集成 Prisma Client 进行数据访问。关于prisma.yml各配置项如endpoint、datamodel、generate、seed等的完整说明可继续阅读 02-prisma.yml。赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma CLI 实战使用 prisma init 搭建数据库服务与 GraphQL 项目脚手架Prisma CLI 实战使用 prisma init 搭建数据库服务与 GraphQL 项目脚手架 prisma init 是 Prisma CLI当前仓后端数据库GraphQLprisma init 命令详解为 Prisma 数据库 API 搭建本地项目骨架Prisma 1.14 CLI 参考prisma init 命令详解为 Prisma 数据库 API 搭建本地项目骨架Prisma 1.14 CLI 参考 prisma init 是 Pri后端数据库GraphQLPrisma Boilerplate 引导基于 GraphQL CLI 快速搭建 Prisma GraphQL 服务的完整指南Prisma Boilerplate 引导基于 GraphQL CLI 快速搭建 Prisma GraphQL 服务的完整指南 导读 本指南围绕 Prisma后端数据库GraphQL上一篇Comet从创意到验证的AI驱动开发工作流平台下一篇iNiR与Hyprland兼容性如何在其他Wayland合成器上运行iNiR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表