# @directus/sdk 中文文档

规范地址：https://npmcn.com/package/%40directus/sdk/

版本：27\.1\.0
npm 元数据更新时间：2026-10-27T16:57:03.000Z
中文译文更新时间：2026-11-12T10:50:00.735Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：1.3 MB，983 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：0 个
- 首次发布：2021-04-06T22:43:19.898Z
- 最新版本发布：2026-10-27T16:57:02.591Z
- 近 30 天下载量：707464（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：160（近 12 个月 18 个）

## 中文简介

Directus Java 脚本 SDK

## 安装

```sh
npm install @directus/sdk
```

也可以使用：`pnpm add @directus/sdk`、`yarn add @directus/sdk`、`bun add @directus/sdk`

## README

# Directus Java 脚本 SDK

## 特征

-   **类型脚本第一 :** SDK提供了稳健而安全的开发经验.
-   **模块架构 :** SDK被分割成单独的模块,使您能够对哪些特性进行颗粒控制 包括,并且可以在建设时使用.
-   **轻而无依赖性:** 它不需要外部图书馆,确保更轻的捆绑和精简 经历.

## 可编译客户端

客户端被分割成不同的功能,您可以混合和匹配来编曲一个只包含您需要的功能的客户端或 想要吗.

```ts
const client = createDirectus<Schema>('https://directus.example.com');
```

此客户端目前是一个空包装器,没有任何功能. 在你用它做任何事情之前,你必须 添加一些特性。 现有/正在进行下列可混合体:

-   `rest()` REST 请求函数
    -   添加 `.request(...)` 关于客户端
-   `graphql()` 图QL 请求函数
    -   添加 `.query(...)` 关于客户端
-   `staticToken()` 认证功能
    -   添加 `.getToken()` 财务报告和审定财务报表 `.setToken()` 关于客户端
-   `authenticate()` 认证功能
    -   添加 `.login({ email, password })`, (中文(简体) ), `.logout()`, (中文(简体) ), `.refresh()` 关于客户端
    -   添加 `.getToken()` 财务报告和审定财务报表 `.setToken()` 关于客户端
-   `realtime()` 网页连接
    -   添加 `.subscribe(...)`, (中文(简体) ), `.sendMessage(...)`, (中文(简体) ), `.onWebsocket('message', (message) => {})` 关于客户端

举个例子,我们将建立一个客户端,包括 `rest` 财务报告和审定财务报表 `graphql`数字 :

```ts
const client = createDirectus<Schema>('https://directus.example.com').with(rest()).with(graphql());

// do a REST request
const restResult = await client.request(readItems('articles'));

// do a GraphQL request
const gqlResult = await client.query<OutputType>(`
    query {
        articles {
            id
            title
            author {
                first_name
            }
        }
    }
`);
```

## 认证

```ts
const client = createDirectus<Schema>('https://directus.example.com').with(rest()).with(authentication('json'));

await client.login('admin@example.com', 'd1r3ctu5');

// do authenticated requests
```

```ts
const client = createDirectus<Schema>('https://directus.example.com')
    .with(rest())
    .with(staticToken('super-secure-token'));

// do authenticated requests
```

## 实时

这个 `realtime()` 扩展允许您使用 Directus REST WebSocket 工作.

订阅更新 :

```ts
const client = createDirectus<Schema>('https://directus.example.com').with(
    realtime({
        authMode: 'public',
    }),
);

const { subscription, unsubscribe } = await client.subscribe('test', {
    query: { fields: ['*'] },
});

for await (const item of subscription) {
    console.log('subscription', { item });
}

// unsubscribe()
```

接收/发送信件 :

```ts
const client = createDirectus<Schema>('https://directus.example.com').with(
    realtime({
        authMode: 'public',
    }),
);

const stop = client.onWebSocket('message', (message) => {
    if ('type' in message && message['type'] === 'pong') {
        console.log('PONG received');
        stop();
    }
});

client.sendMessage({ type: 'ping' });
```

## 构建您的外观

```ts
// The main schema type containing all collections available
interface MySchema {
    collection_a: CollectionA[]; // regular collections are array types
    collection_b: CollectionB[];
    collection_c: CollectionC; // this is a singleton
    // junction collections are collections too
    collection_a_b_m2m: CollectionAB_Many[];
    collection_a_b_m2a: CollectionAB_Any[];
}

// collection A
interface CollectionA {
    id: number;
    status: string;
    // relations
    m2o: number | CollectionB;
    o2m: number[] | CollectionB[];
    m2m: number[] | CollectionAB_Many[];
    m2a: number[] | CollectionAB_Any[];
}

// Many-to-Many junction table
interface CollectionAB_Many {
    id: number;
    collection_a_id: CollectionA;
    collection_b_id: CollectionB;
}

// Many-to-Any junction table
interface CollectionAB_Any {
    id: number;
    collection_a_id: CollectionA;
    collection: 'collection_b' | 'collection_c';
    item: string | CollectionB | CollectionC;
}

// collection B
interface CollectionB {
    id: number;
    value: string;
}

// singleton collection
interface CollectionC {
    id: number;
    app_settings: string;
    something: string;
}
```

## 常见问题

### @directus/sdk 是什么？

Directus Java 脚本 SDK

### 如何安装 @directus/sdk？

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

### @directus/sdk 支持 TypeScript 吗？

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

### @directus/sdk 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @directus/sdk 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @directus/sdk 可以商用吗？

@directus/sdk 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @directus/sdk 的下载量有多少？

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

### @directus/sdk 还在维护吗？

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

