@directus/sdk

中文文档
27.1.0发布于 2026/10/28MITESM + CJS零依赖构建来源已验证近 30 天下载 70.7万

Directus Java 脚本 SDK

中文使用文档
文档目录5 节
  1. 特征
  2. 可编译客户端
  3. 认证
  4. 实时
  5. 构建您的外观

Directus Java 脚本 SDK

特征

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

可编译客户端

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

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数字 :

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
            }
        }
    }
`);

认证

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

await client.login('[email protected]', 'd1r3ctu5');

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

// do authenticated requests

实时

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

订阅更新 :

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()

接收/发送信件 :

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' });

构建您的外观

// 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 共发布 160 个版本,首次发布于 2021/04/07;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
27.1.0latest2026/10/2815 天前
27.0.02026/10/081 个月前
26.0.02026/09/231 个月前
25.0.12026/08/262 个月前
25.0.02026/08/192 个月前
24.0.02026/07/303 个月前

其他发布通道:beta → 11.0.0-beta.6,canary → 22.0.0-rc.1。

关于 @directus/sdk 的常见问题

@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 和提交记录判断。