首页 / Prisma ORM 入门教程 / 安装、初始化与项目骨架解读

Prisma ORM 入门教程

安装、初始化与项目骨架解读

本教程共 54 篇 · 第 3 篇 · 更新于 2026-08-11 · 约 4 分钟阅读

Prismaprisma init生成器schema.prismaESMdotenv

本节目标:看懂 prisma init 生成了什么,每个文件干什么,以及 v7 的生成器为什么必须写 output

安装 Prisma

先装包。prisma 是 CLI,开发依赖;@prisma/client 是运行时客户端:

npm install prisma --save-dev
npm install @prisma/client

再按数据库装对应的驱动程序适配器(Driver Adapter)。PostgreSQL 用 @prisma/adapter-pg,SQLite 用 @prisma/adapter-better-sqlite3

验证安装:

npx prisma --version

能看到版本号,说明 CLI 就绪。

prisma init 生成的四件套

在项目根目录执行:

npx prisma init --datasource-provider postgresql --output ../generated/prisma

一条命令生成四个文件。它们是整个项目的骨架:

  1. prisma/schema.prisma:Schema(模式)文件,定义数据源、生成器和模型。这是 Prisma 的核心,相当于数据库的图纸。
  2. prisma.config.ts:CLI 的配置文件。数据库连接串、迁移路径、种子脚本都在这里配。
  3. .env:环境变量文件,DATABASE_URL 就放这里。它会被 .gitignore 排除,不进入版本库。
  4. .gitignore:自动帮你把 .env 和生成目录排除掉,防止敏感信息泄露。

--output 指定 Prisma Client 生成到哪里。这个参数很关键,见下文。

v7 生成器:prisma-client 与必填的 output

打开 schema.prisma,你会看到:

generator client {
  provider = "prisma-client"
  output   = "../generated/prisma"
}

datasource db {
  provider = "postgresql"
}

两个要点:

  • provider = "prisma-client":v7 默认生成器,输出纯 TypeScript 代码。旧版 prisma-client-js 已弃用。
  • output 必填:v7 不再把客户端偷偷生成到 node_modules,必须指定一个你自己的目录。上面的配置表示生成到 generated/prisma(相对 schema.prisma 所在目录)。

生成器决定 prisma generate 产出什么。生成之后,导入路径也随之改变——不再从 @prisma/client 导入,而是从你指定的目录:

// v6 写法(已废弃)
import { PrismaClient } from "@prisma/client";

// v7 写法
import { PrismaClient } from "../generated/prisma/client";

生成的目录结构是分文件的:

generated/prisma/
├── client.ts           # 服务端入口,导出 PrismaClient
├── browser.ts          # 浏览器端类型(不含客户端构造函数)
├── commonInputTypes.ts # 跨模型共享的输入类型
├── enums.ts            # 枚举类型,前后端都能用
├── models.ts           # 所有模型类型
├── models/             # 每个模型一个文件
└── internal/           # 运行时内部实现(如 class.ts)

日常开发只用 client.ts 就够了。拆分文件的意义在于:按需导入能加快类型检查,也能做 tree-shaking。

Note

生成目录建议加进 .gitignoreprisma init 已经帮你做了)。它是机器生成的产物,重新 generate 就能还原,不需要提交。

ESM 与 dotenv 的配合

Prisma 以 ES Module 发布,package.json 必须声明 "type": "module";CLI 也不再自动加载 .env,要在 prisma.config.ts 顶部显式 import "dotenv/config",详细配置见 §04。

Tip

tsx 直接跑 TypeScript 时,如果报 Cannot find module './internal/class.js',在生成器里加一行 importFileExtension = "ts"。生成的代码默认用 .js 后缀导入,tsx 解析不了,改回 .ts 即可。

可选的初始化参数

prisma init 还支持几个实用参数:

  • --with-model:顺便生成一个示例模型,新手可以对照着改
  • --output ./custom-path:自定义客户端输出目录
  • --datasource-provider mysql|sqlite|sqlserver:切换数据库类型
  • --generator-provider prisma-client-js:显式退回旧生成器(仅限旧项目过渡用,新项目禁用)

初始化完可以先用 npx prisma validate 检查 Schema 有没有语法错误。下一步,就是往 Schema 里写模型、跑迁移了。

参考来源

  • Prisma 官方文档:prisma init(CLI reference)、Generators(prisma-schema/overview)
  • Prisma 官方文档:Environment variables(dev-environment)
  • 英文教程:MapaGam 博客 - 安装与配置 Prisma
  • 英文教程:dev.to(Manuj Dixit)- How to Upgrade to Prisma v7