zenstack-project-setup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseZenStack V3 — Project Setup & Migrations
ZenStack V3 — 项目设置与迁移
ZenStack V3 is a TypeScript database toolkit with a Prisma-compatible ORM API built on
Kysely (no Rust/WASM). The schema is written in ZModel (), a
superset of the Prisma schema language. This skill covers installing, scaffolding, the CLI, and
migrations. For schema syntax see ; for queries see ;
for access control see .
.zmodelzenstack-schema-modelingzenstack-queryingzenstack-access-controlAlways confirm exact package versions and commands against the live docs at https://zenstack.dev/docs when something looks off — V3 evolves quickly.
ZenStack V3 是一个 TypeScript 数据库工具包,提供兼容 Prisma 的 ORM API,基于
Kysely 构建(无需 Rust/WASM)。Schema 使用 ZModel()编写,
它是 Prisma schema 语言的超集。本 skill 涵盖安装、项目脚手架、CLI 和迁移。
有关 schema 语法,请参阅 ;有关查询,请参阅 ;
有关访问控制,请参阅 。
.zmodelzenstack-schema-modelingzenstack-queryingzenstack-access-control如果发现任何异常,应始终根据 https://zenstack.dev/docs 上的实时文档核实确切的包版本和命令——V3 演进速度很快。
Prerequisites
前置条件
- Node.js v20+
- TypeScript v5.8.0+
- VSCode extension: "ZenStack V3" (language id ) — distinct from the V2 extension.
zmodel-v3
- Node.js v20+
- TypeScript v5.8.0+
- VSCode 扩展:"ZenStack V3"(language id )——与 V2 扩展不同。
zmodel-v3
Installing
安装
Scaffold a new project (recommended)
创建新项目脚手架(推荐)
bash
npm create zenstack my-projectbash
npm create zenstack my-projectInitialize ZenStack in an existing project
在现有项目中初始化 ZenStack
bash
npx @zenstackhq/cli zen initThen create and run .
zenstack/schema.zmodelzen generatebash
npx @zenstackhq/cli zen init然后创建 并运行 。
zenstack/schema.zmodelzen generateManual install
手动安装
bash
npm install @zenstackhq/schema @zenstackhq/orm
npm install --save-dev @zenstackhq/cliZenStack does not bundle database drivers — install one yourself:
| Database | Install |
|---|---|
| PostgreSQL | |
| MySQL | |
| SQLite | |
Add access control only if needed: (see
).
npm install @zenstackhq/plugin-policyzenstack-access-controlbash
npm install @zenstackhq/schema @zenstackhq/orm
npm install --save-dev @zenstackhq/cliZenStack 不会捆绑数据库驱动——请自行安装:
| 数据库 | 安装命令 |
|---|---|
| PostgreSQL | |
| MySQL | |
| SQLite | |
仅在需要时添加访问控制:(请参阅
)。
npm install @zenstackhq/plugin-policyzenstack-access-controlProject structure
项目结构
- Schema: (default; override with
zenstack/schema.zmodel).--schema - Generated output: emitted next to the schema (override with ). Import it as
--output.import { schema } from './zenstack/schema' - You may commit the generated TypeScript, or it and run
.gitignorein CI.zen generate
- Schema:(默认路径;可通过
zenstack/schema.zmodel覆盖)。--schema - 生成输出:输出到 schema 所在位置(可通过 覆盖)。按以下方式导入:
--output。import { schema } from './zenstack/schema' - 你可以提交生成的 TypeScript,也可以将其加入 ,并在 CI 中运行
.gitignore。zen generate
The zen
CLI
zenzen
CLI
zenThe CLI is invoked as (or — equivalent). Add scripts to :
zenzenstackpackage.jsonjson
{
"scripts": {
"generate": "zen generate",
"db:push": "zen db push",
"migrate:dev": "zen migrate dev",
"migrate:deploy": "zen migrate deploy"
}
}| Command | Purpose |
|---|---|
| Only validate |
| Compile |
| Push schema to the DB without a migration file. Dev/testing only — never in production. |
| Introspect an existing DB and update the ZModel schema (v3.4.0+, experimental). Can overwrite your schema — back up / use source control first. |
| Create a migration from schema changes and apply it (dev only). |
| Apply all pending migrations. Use this in your production/deploy pipeline. |
| Drop all tables and reapply migrations. Dev/testing only. |
| Show applied vs. pending migrations. |
| Mark a migration applied/rolled-back without changing the schema (manual recovery). |
Migration commands wrap Prisma Migrate;has a peer dependency on@zenstackhq/clithat is installed automatically when needed.prisma
For the full migration story — ////, /,
seeding, , and deployment-pipeline guidance — see the skill.
migrate devdeployresetstatusresolvedb pushpull--create-onlyzenstack-db-migrationCLI 通过 调用(或使用等价的 )。在 中添加 scripts:
zenzenstackpackage.jsonjson
{
"scripts": {
"generate": "zen generate",
"db:push": "zen db push",
"migrate:dev": "zen migrate dev",
"migrate:deploy": "zen migrate deploy"
}
}| 命令 | 用途 |
|---|---|
| 仅验证 |
| 将 |
| 将 schema 推送到 DB,不创建 migration file。仅用于开发/测试——切勿在生产环境中使用。 |
| 内省现有 DB 并更新 ZModel schema(v3.4.0+,实验性)。它可能覆盖 schema——请先备份或使用版本控制。 |
| 根据 schema 变更创建 migration 并应用(仅限开发环境)。 |
| 应用所有待处理的 migrations。用于生产/部署 pipeline。 |
| 删除所有表并重新应用 migrations。仅用于开发/测试。 |
| 显示已应用和待处理的 migrations。 |
| 将 migration 标记为已应用或已回滚,但不更改 schema(用于手动恢复)。 |
Migration 命令封装了 Prisma Migrate;对@zenstackhq/cli有一个 peer dependency,会在需要时自动安装。prisma
有关完整的 migration 方案——////、
/、seeding、 以及部署 pipeline 指南——请参阅
skill。
migrate devdeployresetstatusresolvedb pushpull--create-onlyzenstack-db-migrationWorkflows
工作流
Development loop
- Edit .
zenstack/schema.zmodel - (regenerate types).
zen generate - to try changes locally without a migration, or
zen db pushto create a reviewable, committable migration file.zen migrate dev - Review the migration SQL, then commit it.
Production deploy
bash
zen migrate deployAdopt ZenStack on an existing database
zen init- Set the datasource in
url.zenstack/schema.zmodel - to generate the schema from the DB.
zen db pull - Refine it (add access policies, computed fields, etc.).
- .
zen generate
开发循环
- 编辑 。
zenstack/schema.zmodel - 运行 (重新生成 types)。
zen generate - 使用 在本地试用变更而不创建 migration,或使用
zen db push创建一个 可审查、可提交的 migration file。zen migrate dev - 审查 migration SQL,然后提交。
生产部署
bash
zen migrate deploy将 ZenStack 接入现有数据库
zen init- 在 中设置 datasource
zenstack/schema.zmodel。url - 执行 ,从 DB 生成 schema。
zen db pull - 完善 schema(添加 access policies、computed fields 等)。
- 。
zen generate
Migrating from Prisma
从 Prisma 迁移
See the dedicated skill — it walks through swapping dependencies,
converting to ZModel, replacing with , updating the
generate/migrate scripts, and mapping Prisma custom generators and client extensions.
zenstack-migrate-from-prismaschema.prismaPrismaClientZenStackClient请参阅专用的 skill——它会逐步讲解如何替换依赖、
将 转换为 ZModel、将 替换为 、更新
generate/migrate scripts,以及映射 Prisma 自定义 generators 和 client extensions。
zenstack-migrate-from-prismaschema.prismaPrismaClientZenStackClientMigrating from ZenStack V2
从 ZenStack V2 迁移
See the dedicated skill — it covers the package renames, moving access
control to the policy plugin, the → / change, abstract models →
types+mixins, the → server-adapter change, and the client-side hook
migration.
zenstack-migrate-from-v2future()post-updatebefore()getPrismagetClient请参阅专用的 skill——它涵盖包重命名、将访问控制迁移到
policy plugin、 → / 变更、abstract models → types+mixins、
→ 的 server-adapter 变更,以及 client-side hook 迁移。
zenstack-migrate-from-v2future()post-updatebefore()getPrismagetClientReference docs
参考文档
Full ZenStack documentation for this topic is bundled under :
references/- prerequisite.md — supported Node/TypeScript versions, IDE setup
- quick-start.md — scaffolding and the install paths
- cli.md — overview of every CLI command
zen - cli-reference.md — full CLI reference
- migration.md — dev/production migration workflow
- introspection.md — from an existing database
zen db pull
本主题的完整 ZenStack 文档打包在 下:
references/- prerequisite.md——支持的 Node/TypeScript 版本、IDE 设置
- quick-start.md——项目脚手架和安装路径
- cli.md——每个 CLI 命令的概览
zen - cli-reference.md——完整的 CLI 参考
- migration.md——开发/生产 migration 工作流
- introspection.md——从现有数据库执行
zen db pull