@commercetools-test-data/core

中文文档
10.18.2发布于 2025/05/08MITTypeScriptESM + CJS近 30 天下载 1.1万

此软件包提供了定义数据模型的核心职能

中文使用文档
文档目录7 节
  1. 安装
  2. 创建新数据模型
  3. 构建器
  4. 发电机
  5. 变形器
  6. 预设
  7. 类型

@commercetools-test-data/core

这个包提供了定义数据模型的核心职能.

安装

$ pnpm add -D @commercetools-test-data/core

创建新数据模型

模型的定义载于 models/* 工作空间,并按不同软件包中的域分组.

要创建新模式,请在 models 具有下列结构的工作空间:

models/<package_name>
├── LICENSE
├── README.md
├── index.ts
├── package.json
├── src
│   └── <model_name>
│       ├── builder.ts
│       ├── generator.ts
│       ├── index.ts
│       ├── presets
│       │   └── index.ts
│       ├── transformers.ts
│       └── types.ts
├── tsconfig.declarations.json
└── tsconfig.json

要定义和构建新模型,需要使用核心软件包 @commercetools-test-data/core。 。 。 .

构建器

一个构建者是数据模型的结果. 构建器允许与其他模型组成,并将数据转换为不同的形状,例如: rest 或者说 graphql。 。 。 .

当你想要获得生成的数据时,你会 构建 模型(建设者).

建造器基本上由发电机和(可选的)变压器组成.

发电机

一个生成器是描述初始模型形状和数据的方法. 大多数字段可以而且应该以一些价值来初始化. 您可以使用 fake 或静态值.

import type { TAuthor } from './types';
import { Generator, fake } from '@commercetools-test-data/core';

const generator = Generator<TAuthor>({
  fields: {
    firstName: fake((f) => f.person.firstName()),
    locale: 'en',
  },
});

生成器模型的外形是UI中通常使用的东西,不需要转换.

模型可以有嵌入场,如物体或阵列. 大多数时候,这些也被定义为模型. 在这种情况下,生成器可以定义嵌入场值为 null。这些嵌入式模型随后被建造在建造器或变压器中.

例如,作者模型可以有一个书列表:

import type { TAuthor } from './types';
import { Generator, fake } from '@commercetools-test-data/core';

const generator = Generator<TAuthor>({
  fields: {
    firstName: fake((f) => f.person.firstName()),
    locale: 'en',
    books: null,
  },
});

书籍被定义为另一种模式:

import type { TBook } from './types';
import { Generator, fake } from '@commercetools-test-data/core';

const generator = Generator<TBook>({
  name: 'Book',
  fields: {
    title: fake((f) => f.lorem.words()),
  },
});

当定义构建者时 Author,然后我们就可以初始化 books 通过引用 Book 型号.

import type { TAuthor } from './types';
import { Builder } from '@commercetools-test-data/core';
import * as Book from '../book';

const Author = Builder<TAuthor>({
  generator,
  transformers,
}).books([Book.random()]);

同时,我们还需要告诉变压器 books 字段可以构建。 我们这样做的方式是,在 buildFields 选项 :

import type { TAuthor, TAuthorGraphql } from './types';
import { Transformer } from '@commercetools-test-data/core';

const transformers = {
  graphql: Transformer<TAuthor, TAuthorGraphql>('graphql', {
    buildFields: ['books'],
    // ...
  }),
};

变形器

变压器用于将生成器(初始模型)中定义的数据转换为另一个形状.

现有3个变压器类型:

  • default:这是"身份"变压器. 你会用 build() 根据初始形状获取生成数据的方法.
  • graphql:这是GraphQL数据形状的变压器。 你会用 buildGraphql() 将生成的数据转换成图形QL形状的方法.
  • rest:这是REST数据形状的变压器。 你会用 buildRest() 将生成的数据转换为 REST 形状的方法.

定义a graphql 和(或)a rest 变压器是可选的,取决于具体的数据要求是什么.

举例来说 Author 我们可以定义一个 graphql 像这样的变压器:

import type { TAuthor, TAuthorGraphql } from './types';
import { Transformer } from '@commercetools-test-data/core';

const transformers = {
  graphql: Transformer<TAuthor, TAuthorGraphql>('graphql', {
    buildFields: ['books'],
    addFields: () => ({
      __typename: 'Author',
    }),
  }),
};

然后打电话 Author.random().buildGraphql<TAuthorGraphql>() 将使用 __typename 字段.

变压器可以配置不同的选项:

  • buildFields: 被定义为其他数据模型的字段列表. 这样做是必要的,这样这些嵌入式模型的变压器也会被执行.
  • removeFields:应该从模型中删除的字段列表.
  • addFields: 一个函数,该函数应返回一个需要添加到模型中的新字段的对象。 然后将对象与初始数据合并. 函数获得初始对象参数 fields 对象,以防需要构造出新对象.
  • replaceFields: 一个函数,该函数应返回已完全转换的值。 例如,在将数据转换成不同的数据类型时,例如将一个对象转换为一系列对象时,这样做是有用的. 函数获得初始对象参数 fields 对象,以防需要构造值.

这个 replaceFields 备选案文在下列两个方面相互排斥: addFields 财务报告和审定财务报表 removeFields 选项.

预设

预设是预配置模型(buildingers),可被定义用于特定用例并被再用.

例如:

// presets/author-with-one-book.ts
import type { TAuthorBuilder } from './types';
import * as Book from '../../book';
import Author from './builder';

const preset = (): TAuthorBuilder => Author.random().books([Book.random()]);
export default preset;

// presets/index.ts
export { default as authorWithOneBook } from './author-with-one-book';

注意预设导出函数 。 该函数有用,以防预设需要使用一些随机数据,使用 faker 软件包。 这保证了在每个函数引用时,返回的数据确实是随机的.

例如:

// presets/author-with-one-book.ts
import type { TAuthorBuilder } from './types';
import { faker } from '@faker-js/faker';
import * as Book from '../../book';
import Author from './builder';

const preset = (): TAuthorBuilder =>
  Author.random().books([Book.random().title(faker.helpers.words())]);
export default preset;

// presets/index.ts
export { default as authorWithOneBook } from './author-with-one-book';

类型

这个 types.ts 文件包含模型和已转换模型的 TypeScript 表达式.

版本与发布记录

@commercetools-test-data/core 共发布 599 个版本,首次发布于 2020/09/15;过去 12 个月发布了 0 个版本。

版本发布日期距今
10.18.2latest2025/05/081.5 年前
0.0.0-canary-20250508100830canary2025/05/081.5 年前
10.18.12025/05/071.5 年前
0.0.0-canary-202505071304522025/05/071.5 年前
10.18.02025/05/071.5 年前
0.0.0-canary-202505070711342025/05/071.5 年前

关于 @commercetools-test-data/core 的常见问题

@commercetools-test-data/core 是什么?

此软件包提供了定义数据模型的核心职能

如何安装 @commercetools-test-data/core?

在项目目录运行 npm install @commercetools-test-data/core,或使用 pnpm add / yarn add / bun add。

@commercetools-test-data/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@commercetools-test-data/core 支持 ESM 还是 CommonJS?

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

@commercetools-test-data/core 可以商用吗?

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

@commercetools-test-data/core 的下载量有多少?

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

@commercetools-test-data/core 还在维护吗?

最新版本 10.18.2 发布于 2025/05/08(1.5 年前);至今共发布 599 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/09/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。