安装、初始化与项目骨架解读
本教程共 54 篇 · 第 3 篇 · 更新于 2026-08-11 · 约 4 分钟阅读
本节目标:看懂
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
一条命令生成四个文件。它们是整个项目的骨架:
prisma/schema.prisma:Schema(模式)文件,定义数据源、生成器和模型。这是 Prisma 的核心,相当于数据库的图纸。prisma.config.ts:CLI 的配置文件。数据库连接串、迁移路径、种子脚本都在这里配。.env:环境变量文件,DATABASE_URL就放这里。它会被.gitignore排除,不进入版本库。.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生成目录建议加进
.gitignore(prisma 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