# @directus/schema-builder 中文文档

规范地址：https://npmcn.com/package/%40directus/schema-builder/

版本：2\.0\.0
npm 元数据更新时间：2026-10-27T16:59:37.861Z
中文译文更新时间：2026-11-12T10:51:21.567Z
软件包许可：SEE LICENSE IN license

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40directus/schema-builder
原文对照：https://npmcn.com/package/%40directus/schema-builder/?lang=original
项目主页：https://directus.com/
源码仓库：https://github.com/directus/directus

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：44.3 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：2 个
- 首次发布：2025-04-29T21:52:14.244Z
- 最新版本发布：2026-10-27T16:59:37.514Z
- 近 30 天下载量：20769（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：28（近 12 个月 20 个）

## 中文简介

Directus SchemaBuilder),用于以代码为基础来嘲弄/构建数据库计划.

## 安装

```sh
npm install @directus/schema-builder
```

也可以使用：`pnpm add @directus/schema-builder`、`yarn add @directus/schema-builder`、`bun add @directus/schema-builder`

## README

# @ directus/schema- 建设者

Directus SchemaBuilder 用于模拟/构建基于代码的数据库计划,仅供内部使用.

## 使用量

像这样:

```ts
const schema = new SchemaBuilder()
    .collection('articles', (c) => {
        c.field('id').id();
        c.field('title').string();
        c.field('content').text();
        c.field('published').dateTime();
    })
    .build();
```

或为o2m关系:

```ts
const schema = new SchemaBuilder()
    .collection('countries', (c) => {
        c.field('id').id();
        c.field('cities').o2m('cities', 'country_id');
    })
    .collection('cities', (c) => {
        c.field('id').id();
    })
    .build();
```

或m2m关系:

```ts
const schema = new SchemaBuilder()
    .collection('articles', (c) => {
        c.field('id').id();
        c.field('tags').m2m('tags');
    })
    .build();
```

传出一个字段名称作为第二个同时在相关收藏上创建倒数 m2m 字段的参数 :

```ts
c.field('tags').m2m('tags', 'articles'); // tags.articles lists the articles of a tag
```

## 抓图

构建者通过收藏,字段和关系来描述这个图案, 同样的形状是 Directus schema shrapp 用户。 下一个 `build()`时返回 a `SchemaOverview`,可以导出该图案作为可应用的快照 以Directus实例为准:

```ts
const snapshot = new SchemaBuilder()
    .collection('articles', (c) => {
        c.field('id').id();
        c.field('title').string();
    })
    .snapshot({ directus: '12.0.0', vendor: 'postgres' });
```

这个 `directus` 版本和 `vendor` 除非强制应用,否则必须匹配所应用的快照.

任何快照, 包括那些由 `/schema/snapshot` 端点,可以转换成 `SchemaOverview` 与 `toSchemaOverview`数字 :

```ts
import { toSchemaOverview } from '@directus/schema-builder';

const schema = toSchemaOverview(snapshot);
```

## 类型脚本

同样的图案可以导出为 TypeScript 接口,形状为 Directus SDK 所期望的,所以一个快照及其 类型可以同时生成 :

```ts
const builder = new SchemaBuilder().collection('articles', (c) => {
    c.field('id').id();
    c.field('title').string();
    c.field('author').m2o('users');
});

const snapshot = builder.snapshot({ directus: '12.0.0', vendor: 'postgres' });
const types = builder.types(); // export interface Schema { articles: Articles[]; users: Users[]; } ...
```

类型也可以从任何快照中生成 `toTypeScript(snapshot, { schemaName: 'Schema' })`。 。 。 .

## 常见问题

### @directus/schema-builder 是什么？

Directus SchemaBuilder\),用于以代码为基础来嘲弄/构建数据库计划\.

### 如何安装 @directus/schema-builder？

在项目目录运行 npm install @directus/schema-builder，或使用 pnpm add / yarn add / bun add。

### @directus/schema-builder 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/directus\_\_schema-builder 是否存在。

### @directus/schema-builder 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @directus/schema-builder 可以商用吗？

@directus/schema-builder 使用 SEE LICENSE IN license 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

### @directus/schema-builder 的下载量有多少？

根据 npm 官方下载统计，@directus/schema-builder 在 2026/10/13 – 2026/11/11 这 30 天内被下载 20,769 次，日均约 692 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @directus/schema-builder 还在维护吗？

最新版本 2\.0\.0 发布于 2026/10/28（15 天前）；至今共发布 28 个版本，其中过去 12 个月发布了 20 个；首次发布于 2025/04/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

