ARTICLE DETAIL

资讯详情

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

Prisma 1 `prisma init` 命令完全指南:初始化 Prisma 数据库服务与本地文件结构

Prisma 1 `prisma init` 命令完全指南:初始化 Prisma 数据库服务与本地文件结构 后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载prisma init是 Prisma 1 CLI 中用于创建新 Prisma 数据库服务Database Service本地文件结构的核心命令。本指南以 docs/1.12/04-Reference/07-CLI-Command-Reference/02-Database-Service/01-prisma-init.md 为骨架结合当前仓库 CLI 源码逐行解析该命令的参数、交互流程、生成文件与后续部署步骤帮助你从零快速搭建一个可运行的 Prisma 服务骨架并理解其底层实现。命令概述prisma init用于为新的 Prisma 数据库 API 创建本地文件结构。运行后它会在目标目录中生成一个 Prisma 服务service所需的最小文件集——主要是服务定义文件prisma.yml和数据模型文件datamodel.prisma为后续prisma deploy部署奠定基础。该命令对应 CLI 包prisma-cli-core中的 Init 命令实现源码中定义的命令元信息如下topicinitdescriptionInitialize a new service可选位置参数dirName要初始化的目录名可选可选 flag--endpoint/-e初始服务 endpoint可选从源码可以确认prisma init有两种运行形态非交互模式提供--endpoint与交互式向导模式未提供 endpoint 时。下文会分别展开。基本用法与示例Usage用法prisma init DIRNAME其中DIRNAME是可选参数。根据官方参考文档与 init.ts 源码如果提供了目录名命令会在当前工作目录下新建以该名称命名的目录并把生成的文件放入其中同时将该目录设为后续所有操作的definitionDir服务定义目录如果不提供目录名生成的文件会被直接写入当前工作目录。Examples示例官方文档给出的标准示例是prisma init myapp执行后会在myapp/目录中创建服务文件结构例如生成prisma.yml与datamodel.prisma随后 CLI 会输出创建的文件清单与下一步操作指引详见下文生成文件与后续步骤。版本变更警告--boilerplate标志已被移除Prisma 1.7 起--boilerplate标志已从prisma init中移除。这意味着你不再能基于 GraphQL boilerplate 项目一次性引导bootstrap整个 GraphQL 服务器。如果你仍希望基于 GraphQL boilerplate 项目快速搭建一个完整的 GraphQL 服务器官方文档给出的替代方案是使用GraphQL CLI提供的graphql create命令# 安装 GraphQL CLI npm install -g graphql-cli # 通过交互式提示选择 boilerplate ... graphql create myapp # ... 或直接通过 --boilerplate 选项指定 boilerplate 项目例如 typescript-advanced graphql create myapp --boilerplate typescript-advanced也就是说引导整个 GraphQL 服务器含解析器、schema、订阅等的任务交由 GraphQL CLI 负责而prisma init聚焦于更纯粹的职责只生成 Prisma 数据库服务本身所需的文件结构。仓库源码印证了这一职责划分。在 init.ts 的实现 中命令最终只负责写三类产物prisma.yml、datamodel.prisma以及在本地部署场景下的docker-compose.yml与.env并不会生成任何 Node.js/GraphQL 服务器代码。另外old.ts中保留了一份被整体注释的历史实现其中曾存在--force、--copy等旧 flag可作为命令演进过程的参考。非交互模式使用--endpoint直接初始化当你已经拥有一个可用的 Prisma 服务 endpoint例如 Prisma Cloud 上的 demo 环境、或已部署好的 Prisma 服务器地址时可以直接用--endpoint别名-e跳过交互式向导prisma init myapp --endpoint https://eu1.prisma.sh/public-demo/myapp/dev从 init.ts 源码 可以看到该模式下的完整行为创建目标目录fs.mkdirpSync根据当前配置的数据库类型选择数据模型模板document类型MongoDB→ 使用 boilerplate/datamodel-mongo.prisma其他类型关系型数据库→ 使用 boilerplate/datamodel.prisma生成prisma.yml内容模板为endpoint: 你传入的 endpoint datamodel: datamodel.prisma输出创建的文件清单prisma.yml、datamodel.prisma与下一步指引进入目录 → 执行prisma1 deploy部署服务。该模式适合在脚本化、CI 或已知目标环境的场景下使用可以完全避免交互。交互式向导模式EndpointDialog 的完整流程当未提供--endpoint时命令会调用EndpointDialog定义于 cli/packages/prisma-cli-core/src/utils/EndpointDialog.ts以交互式问答引导你选择部署目标。这一流程覆盖了 Prisma 1 时代最常见的几种部署形态本地local检测本地http://localhost:4466上是否有正在运行的 Prisma 集群isClusterOnline探测若本地集群已运行可直接选择将其作为目标创建新数据库Create new database选择后向导会询问数据库类型PostgreSQL/MySQL/MongoDB、连接信息host、port、database、user、password 等并生成配套的docker-compose.yml用于拉起一个本地 Prisma 服务器 数据库使用已有数据库Use existing database提供现有数据库连接信息若数据库中已存在数据命令会提示后续可阅读关于 introspection内省的资料Demo 环境Prisma Cloud 免费演示集群对应源码中prisma-eu1: demo-eu1、prisma-us1: demo-us1等集群映射见 EndpointDialog.ts选择后 endpoint 会指向 Prisma Cloud 托管的 demo 集群。向导结束后源码init.ts 第 142-176 行会依据选择结果生成文件prisma.yml写入选定的 endpoint 与数据模型路径当数据库类型为 MongoDB 时额外追加databaseType: document若在向导中选择了客户端生成器generator还会追加generate配置块datamodel.prisma写入向导生成的默认数据模型docker-compose.yml仅当选择了本地集群且需要新建数据库时写入.env当向导生成 management secret 时写入内容为PRISMA_MANAGEMENT_API_SECRETsecret。仓库内的测试 init.test.tsdescribe.skip(init)覆盖了选择本地与使用已有 PostgreSQL 数据库两条交互路径并通过 mock inquirer 的mocki与快照__snapshots__/init.test.ts.snap验证生成文件的正确性是理解交互参数形状dbType、host、port、database、user、password、schema、alreadyData 等的最佳参考。生成文件详解prisma.ymlPrisma 服务定义这是整个服务的入口配置交互模式下典型的完整内容为endpoint: https://eu1.prisma.sh/public-demo/myapp/dev datamodel: datamodel.prisma generate: - generator: typescript-client output: ./generated/prisma-client/endpoint服务部署后的 HTTP endpointdatamodel指向数据模型文件相对路径databaseType: documentMongoDB 场景下追加声明数据模型为文档型generate若在向导中选择了生成器init 完成后会自动尝试调用prisma generate见 init.ts 第 245-273 行并按getGeneratorConfig的模板写入生成器配置与输出目录./generated/prisma-client/。datamodel.prismaSDL 数据模型仓库内置的两个数据模型模板datamodel.prisma 与 datamodel-mongo.prisma内容一致均以一个最小的User类型起步type User { id: ID! id name: String! }它是GraphQL SDL 风格数据模型数据库的基础后续你可以在此基础上继续增加类型、字段与关系然后通过prisma deploy同步到数据库。docker-compose.yml本地 Prisma 服务器编排仅在选择本地新建数据库时生成仓库中的模板见 boilerplate/docker-compose.yml其核心结构包含两个服务prisma-db数据库容器默认使用mysql:5.7镜像通过MYSQL_ROOT_PASSWORD、MYSQL_DATABASE等环境变量初始化并声明db-persistence数据卷持久化数据prisma-databasePrisma 服务器容器默认镜像prismagraphql/prisma:1.1通过一系列SQL_CLIENT_*、SQL_INTERNAL_*、CLUSTER_*环境变量将 Prisma 连接到上方的 MySQL并将容器端口映射到宿主机${PORT}。启动本地服务器的方式为docker-compose up -dinit 命令结束时还会检测docker-compose是否已安装isDockerComposeInstalled见 cli/packages/prisma-cli-core/src/utils/dockerComposeInstalled.ts若未安装会给出安装指引提示。.env管理 API 密钥当向导为本地集群生成了PRISMA_MANAGEMENT_API_SECRET时会额外写入.env文件PRISMA_MANAGEMENT_API_SECRETsecret该密钥用于保护 Prisma 服务器的管理 API后续部署与操作都需要使用。冲突检测与保护机制prisma init内置了目录冲突保护执行前会读取目标目录内容若其中已存在prisma.yml或datamodel.prisma命令会列出可能冲突的文件提示换一个新目录名或先移除上述文件并以退出码1终止见 init.ts 第 45-68 行避免误覆盖已有服务。初始化后的标准流程无论采用哪种模式init 完成后 CLI 都会打印下一步清单典型流程为# 1. 进入服务目录若使用了 dirName cd myapp # 2. 若是本地新建数据库先启动 Prisma 服务器 docker-compose up -d # 3. 部署你的 Prisma 服务 prisma1 deployprisma deploy会依据prisma.yml中的 endpoint 与 datamodel 创建/更新数据库 Schema 并部署 GraphQL API。若初始化时选择了客户端生成器prisma init本身也会在结束时自动触发一次prisma generate源码见 init.ts确保生成器配置立即生效。小结prisma init是 Prisma 1 服务工作流的起点它用最少的交互成本为你搭建出prisma.ymldatamodel.prisma本地场景再加docker-compose.yml与.env的完整服务骨架并衔接docker-compose up -d→prisma1 deploy的部署链路。理解其两种运行形态--endpoint非交互模式与 EndpointDialog 交互向导以及内置的冲突保护机制可以帮助你在脚本化初始化与手动探索之间自由切换快速开启 Prisma 服务的开发。相关命令参考可进一步查阅 07-CLI-Command-Reference 目录下的其他文档。赞分享后端数据库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 命令详解——为 Prisma 数据库服务初始化文件结构Prisma CLI 实战 prisma init 命令详解——为 Prisma 数据库服务初始化文件结构 prisma init 是 Prisma CLI后端数据库GraphQL如何给 CesiumJS 开发自定义 Widget挂上 Viewer、管好生命周期的完整指南如何给 CesiumJS 开发自定义 Widget挂上 Viewer、管好生命周期的完整指南 默认时间轴和你公司的设计规范打架或者想在地球左上角放一块任务后端数据库GraphQLPrisma 1 CLI 实战使用 prisma init 初始化数据库服务项目结构与配置文件Prisma 1 CLI 实战使用 prisma init 初始化数据库服务项目结构与配置文件 导读 prisma init 是 Prisma 1 数据库工具后端数据库GraphQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表