# @damien-thiesson/typeorm-fixtures-cli 中文文档

规范地址：https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/

版本：4\.1\.1
npm 元数据更新时间：2025-06-25T01:40:15.331Z
中文译文更新时间：2026-11-14T09:48:21.423Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40damien-thiesson/typeorm-fixtures-cli
原文对照：https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/?lang=original
项目主页：https://github.com/damien-thiesson/typeorm-fixtures#readme
源码仓库：https://github.com/damien-thiesson/typeorm-fixtures

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

- 包体积（解压后）：92 kB，101 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：17 个
- peer 依赖：typeorm ^0\.3\.0
- 首次发布：2025-06-25T01:40:14.556Z
- 最新版本发布：2025-06-25T01:40:14.780Z
- 近 30 天下载量：2087（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

TypeORM固定装置 CLI -- -- 生产中带有被禁用的假肢的叉子

## 安装

```sh
npm install @damien-thiesson/typeorm-fixtures-cli
```

也可以使用：`pnpm add @damien-thiesson/typeorm-fixtures-cli`、`yarn add @damien-thiesson/typeorm-fixtures-cli`、`bun add @damien-thiesson/typeorm-fixtures-cli`

## README

# TypeORM 定着克力

[![CircleCI](https://circleci.com/gh/RobinCK/typeorm-fixtures.svg?style=svg)](https://circleci.com/gh/RobinCK/typeorm-fixtures) ![GitHub CI](https://github.com/RobinCK/typeorm-fixtures/workflows/Build%20CI/badge.svg?branch=master) [![OpenCollective](https://opencollective.com/typeorm-fixtures/all/badge.svg?label=financial+contributors)](https://opencollective.com/typeorm-fixtures) [![Coverage Status](https://coveralls.io/repos/github/RobinCK/typeorm-fixtures/badge.svg?branch=master&service=github&random=1)](https://coveralls.io/github/RobinCK/typeorm-fixtures?branch=master) [![Version](https://img.shields.io/npm/v/typeorm-fixtures-cli.svg?style=flat-square)](https://www.npmjs.com/package/typeorm-fixtures-cli) [![License](https://img.shields.io/npm/l/typeorm-fixtures-cli.svg?style=flat-square)](https://github.com/RobinCK/typeorm-fixtures/blob/master/LICENSE) [![Backers on Open Collective](https://opencollective.com/typeorm-fixtures/backers/badge.svg)](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-backers) [![Sponsors on Open Collective](https://opencollective.com/typeorm-fixtures/sponsors/badge.svg)](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-sponsors)

依赖 [伪造者.js](https://github.com/faker-js/faker),打字机固定-cli允许您创建一吨固定/假数据,用于开发或测试您的项目。 它为您提供了一些基本的工具,使得您能够非常容易地以可读和易于编辑的方式生成受约束的复杂数据,这样,您的团队中的每个人都可以在需要时来调整固定装置.

## 目录

-   [安装](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-install)
-   [开发设置](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-development-setup)
-   [示例](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-example)
-   [创建固定线](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-creating-fixtures)
    -   [固定范围](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-fixture-ranges)
    -   [定点参考](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-fixture-reference)
    -   [固定列表](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-fixture-lists)
    -   [调用方法](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-calling-sync-and-async-methods)
-   [处理关系](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-handling-relations)
-   [高级指南](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-advanced-guide)
    -   [参数](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-parameters)
    -   [Faker 数据](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-faker-data)
    -   [EJS 调制](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-ejs-templating)
    -   [装入处理器](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-load-processor)
    -   [实体Schemas](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-entity-schemas)
-   [样本](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-samples)
-   [使用量](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-usage)

## 安装

#### 国家预防机制

```bash
npm install typeorm-fixtures-cli --save-dev
```

#### 雅伦

```bash
yarn add typeorm-fixtures-cli --dev
```

## 开发设置

```bash
# install dependencies
npm install

# build dist files
npm run build
```

## 示例

`fixtures/Comment.yml`

```yaml
entity: Comment
items:
  comment{1..10}:
    fullName: '{{name.firstName}} {{name.lastName}}'
    email: '{{internet.email}}'
    text: '{{lorem.paragraphs}}'
    post: '@post*'
```

`fixtures/Post.yml`

```yaml
entity: Post
items:
  post1:
    title: '{{name.title}}'
    description: '{{lorem.paragraphs}}'
    user: '@user($current)'
  post2:
    title: '{{name.title}}'
    description: '{{lorem.paragraphs}}'
    user: '@user($current)'
```

`fixtures/User.yml`

```yaml
entity: User
items:
  user1:
    firstName: '{{name.firstName}}'
    lastName: '{{name.lastName}}'
    email: '{{internet.email}}'
    profile: '@profile1'
    __call:
      setPassword:
        - foo
  user2:
    firstName: '{{name.firstName}}'
    lastName: '{{name.lastName}}'
    email: '{{internet.email}}'
    profile: '@profile2'
    __call:
      setPassword:
        - foo
```

`fixtures/Profile.yml`

```yaml
entity: Profile
items:
  profile1:
    aboutMe: <%= ['about string', 'about string 2', 'about string 3'].join(", ") %>
    skype: skype-account>
    language: english
  profile2:
    aboutMe: <%= ['about string', 'about string 2', 'about string 3'].join(", ") %>
    skype: skype-account
    language: english
```

## 创建固定线

这个库最基本的功能是将平面的 Yaml 文件变成对象

```yaml
entity: User
items:
  user0:
    username: bob
    fullname: Bob
    birthDate: 1980-10-10
    email: bob@example.org
    favoriteNumber: 42

  user1:
    username: alice
    fullname: Alice
    birthDate: 1978-07-12
    email: alice@example.org
    favoriteNumber: 27
```

### 固定范围

第一步是让您创建许多对象的副本,以便去除 Yaml 文件的复制.

您可以在固定名称中定义一个范围:

```yaml
entity: User
items:
  user{1..10}:
    username: bob
    fullname: Bob
    birthDate: 1980-10-10
    email: bob@example.org
    favoriteNumber: 42
```

现在它将生成10个用户,其中ID用户1到用户10. 不错 但我们只有10个 名字、用户名和电子邮件 还不怎么漂亮.

### 定点参考

也可以指定一个参考,指以前创建的固定装置列表:

```yaml
entity: Post
items:
  post1:
    title: 'Post title'
    description: 'Post description'
    user: '@user1'
```

### 固定列表

也可以指定一个数值列表,而不是一个范围:

```yaml
entity: Post
items:
  post{1..10}:
    title: 'Post title'
    description: 'Post description'
    user: '@user($current)'
```

如果是范围(例如用户{1.10}), `($current)` 将返回 1 用户, 2 用户等.

当前迭代可以作为字符串值 :

```yaml
entity: Post
items:
  post{1..10}:
    title: 'Post($current)'
    description: 'Post description'
```

`Post($current)` 将返回员额1,员额2等.

您可以使用基本的数学操作符来突变此输出 :

```yaml
entity: Post
items:
  post{1..10}:
    title: 'Post($current*100)'
    description: 'Post description'
```

`Post($current*100)` 将返回 Post 100 用于员额 1, Post 200 用于员额 2等.

### 调用同步和同步方法

有时虽然您需要调用一种方法来初始化一些更多的数据,但您可以像属性一样这样做,但使用方法名称并给出一系列参数.

```yaml
entity: User
items:
  user{1..10}:
    username: bob
    fullname: Bob
    birthDate: 1980-10-10
    email: bob@example.org
    favoriteNumber: 42
    __call:
      setPassword:
        - foo
```

## 处理关系

```yaml
entity: User
items:
  user1:
    # ...

entity: Group
items:
  group1:
    name: '<{names.admin}>'
    owner: '@user1'
    members:
      - '@user2'
      - '@user3'

```

如果您想要创建十个用户和十个组, 并且每个用户拥有一个组, 您可以使用 `($current)` 当使用固定区域时,用每个迭代的当前编号替换:

```yaml
entity: User
items:
  user1:
    # ...

entity: Group
items:
  group{1..10}:
    name: 'name'
    owner: '@user($current)'
    members:
      - '@user2'
      - '@user3'

```

如果您想要随机的用户而不是固定的用户,可以使用通配符定义引用:

```yaml
entity: User
items:
  user1:
    # ...

entity: Group
items:
  group{1..10}:
    name: 'name'
    owner: '@user*'
    members:
      - '@user2'
      - '@user3'

```

或者说

```yaml
entity: User
items:
  user1:
    # ...

entity: Group
items:
  group{1..10}:
    name: 'name'
    owner: '@user{1..2}' # @user1 or @user2
    members:
      - '@user2'
      - '@user3'

```

## 高级指南

### 参数

您可以设置全局参数, 这些参数将插入任何地方, 用于帮助可读性 。 例如:

```yaml
entity: Group
parameters:
  names:
    admin: Admin
items:
  group1:
    name: '<{names.admin}>' # <--- set Admin
    owner: '@user1'
    members:
      - '@user2'
      - '@user3'
```

### Faker 数据

此图书馆与 [伪造者.js](https://github.com/faker-js/faker) 图书馆。 使用QQfooQ可以调用Faker数据提供者生成随机数据.

让我们把静态的bob用户变成随机的条目:

```yaml
entity: User
items:
  user{1..10}:
    username: '{{internet.userName}}'
    fullname: '{{name.firstName}} {{name.lastName}}'
    birthDate: '{{date.past}}'
    email: '{{internet.email}}'
    favoriteNumber: '{{datatype.number}}'
    __call:
      setPassword:
        - foo
```

#### 禁用标签

如果您需要使用字词 `{{...}}` 在定着器中(例如,Handlebars模板),可以禁用Faker处理:

**每个固定 :**

```yaml
entity: EmailTemplate
disableFaker: true
items:
  welcome:
    subject: 'Welcome {{firstName}}'
    body: 'Hello {{firstName}} {{lastName}}, welcome to {{companyName}}'
```

**全球:**

```typescript
const parser = new Parser({ disableFaker: true });
const builder = new Builder(dataSource, parser, false);
```

### EJS 调制

此图书馆与 [EJS (英语)](https://github.com/mde/ejs)

```yaml
entity: Profile
items:
  profile1:
    aboutMe: <%= ['about string', 'about string 2', 'about string 3'].join(", ") %>
    skype: skype-account>
    language: english
```

### 装入处理器

处理器允许您在对象被坚持之前和/或之后处理它们 。 处理者必须执行: `IProcessor`

```typescript
import { IProcessor } from 'typeorm-fixtures-cli';
```

以下是一个例子:

`processor/UserProcessor.ts`

```typescript
import { IProcessor } from 'typeorm-fixtures-cli';
import { User } from '../entity/User';

export default class UserProcessor implements IProcessor<User> {
  preProcess(name: string, object: any): any {
    return { ...object, firstName: 'foo' };
  }

  postProcess(name: string, object: { [key: string]: any }): void {
    object.name = `${object.firstName} ${object.lastName}`;
  }
}
```

固定配置 `fixtures/user.yml`

```yaml
entity: User
processor: ../processor/UserProcessor
items:
  user1:
    firstName: '{{name.firstName}}'
    lastName: '{{name.lastName}}'
    email: '{{internet.email}}'
```

#### 通用JS 的替代 Javascript语法

如果您需要运行CommonJS下的固定装置,并且使用加载处理器的打字程序有问题,这个替代示例应该为您工作:

`processor/UserProcessor.js`

```javascript

class UserProcessor {
  preProcess(name, obj) {
    return { ...obj, firstName: 'foo' };
  }

  postProcess(name, obj) {
    obj.name = `${obj.firstName} ${obj.lastName}`;
  }
}

module.exports = { default: UserProcessor }

```

### 实体Schemas

如果您在打字机中使用实体Schemas, 您可能会遇到问题 `__call` 由于实体对象的构造方式,在打字机-固定中具有特性.

作为工作轮廓,您应该能够复制同样的方法功能 [装入处理器](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/#readme-load-processor) 预处理方法(注意通过的对象将是普通对象,而不是你的实体对象).

## 使用量

```
Usage: fixtures load [options] <path> Fixtures folder/file path

Use -h or --help to show details of options: fixtures load -h
```

##### 如果实体文件为打字符( 如 [类型](https://typeorm.io/using-cli#if-entities-files-are-in-typescript)(中文(简体) )

这个 CLI 工具是用 Javascript 写成的, 要运行在节点上. 如果您的实体文件在打字符中, 在使用 CLI 之前, 您需要将其转换为 javascript 。 只需使用javascript即可跳过本节.

您可在您的工程中设置 ts- 节点, 以方便操作如下 :

安装 ts- 节点 :

```
npm install ts-node --save-dev
```

在 package.json 的脚本部分下添加打字机命令

```
"scripts": {
    ...
    "fixtures": "fixtures-ts-node-commonjs"
}
```

关于无害环境管理项目,增加以下内容:

```
"scripts": {
    ...
    "fixtures": "fixtures-ts-node-esm"
}
```

##### 需要多个额外的模块

如果一次使用多个模块(如ts-node和tsconfig-paths) 您有能力要求这些模块带有多个需要的旗帜。 例如:

```
fixtures load ./fixtures --dataSource=./dataSource.ts --sync --require=ts-node/register --require=tsconfig-paths/register
```

### 程序装入固定装置

虽然打字机固定-cli是打算用作CLI,但仍然可以装入 在您的程序中通过 API 设置 .

例如,下面的代码片段会加载所有已存在于 `./fixtures` 目录 :

```typescript
import * as path from 'path';
import { Builder, fixturesIterator, Loader, Parser, Resolver } from 'typeorm-fixtures-cli/dist';
import { createConnection, getRepository } from 'typeorm';
import { CommandUtils } from 'typeorm/commands/CommandUtils';

const loadFixtures = async (fixturesPath: string) => {
  let dataSource: DataSource | undefined = undefined;

  try {
    dataSource = await CommandUtils.loadDataSource(dataSourcePath);
    await dataSource.initialize();
    await dataSource.synchronize(true);

    const loader = new Loader();
    loader.load(path.resolve(fixturesPath));

    const resolver = new Resolver();
    const fixtures = resolver.resolve(loader.fixtureConfigs);
    const builder = new Builder(connection, new Parser(), false);

    for (const fixture of fixturesIterator(fixtures)) {
      const entity: any = await builder.build(fixture);
      await dataSource.getRepository(fixture.entity).save(entity);
    }
  } catch (err) {
    throw err;
  } finally {
    if (dataSource) {
      await dataSource.destroy();
    }
  }
};

loadFixtures('./fixtures')
  .then(() => {
    console.log('Fixtures are successfully loaded.');
  })
  .catch((err) => {
    console.log(err);
  });
```

## 样本

-   [收音机固定-样本](https://github.com/RobinCK/typeorm-fixtures-sample)

## 贡献者

### 代码贡献者

这个项目的存在要归功于所有作出贡献的人[贡献](https://npmcn.com/package/%40damien-thiesson/typeorm-fixtures-cli/CONTRIBUTING.md)\[ \[ \] \[ \] \]. \]. [![](https://opencollective.com/typeorm-fixtures/contributors.svg?width=890&button=false)](https://github.com/RobinCK/typeorm-fixtures/graphs/contributors)

### 财政捐助者

成为财政贡献者并帮助我们维持我们的社区[贡献](https://opencollective.com/typeorm-fixtures/contribute)\[ . \]

#### 个人

[![](https://opencollective.com/typeorm-fixtures/individuals.svg?width=890)](https://opencollective.com/typeorm-fixtures)

#### 组织

支持这个项目与你的组织。 你的标志会在这里出现 链接到你的网站。 \[[贡献](https://opencollective.com/typeorm-fixtures/contribute)\[ . \]

[![](https://opencollective.com/typeorm-fixtures/organization/0/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/0/website) [![](https://opencollective.com/typeorm-fixtures/organization/1/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/1/website) [![](https://opencollective.com/typeorm-fixtures/organization/2/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/2/website) [![](https://opencollective.com/typeorm-fixtures/organization/3/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/3/website) [![](https://opencollective.com/typeorm-fixtures/organization/4/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/4/website) [![](https://opencollective.com/typeorm-fixtures/organization/5/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/5/website) [![](https://opencollective.com/typeorm-fixtures/organization/6/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/6/website) [![](https://opencollective.com/typeorm-fixtures/organization/7/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/7/website) [![](https://opencollective.com/typeorm-fixtures/organization/8/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/8/website) [![](https://opencollective.com/typeorm-fixtures/organization/9/avatar.svg)](https://opencollective.com/typeorm-fixtures/organization/9/website)

麻省理工学院 [伊戈尔·奥尼琴科](https://github.com/RobinCK)

## 常见问题

### @damien-thiesson/typeorm-fixtures-cli 是什么？

TypeORM固定装置 CLI -- -- 生产中带有被禁用的假肢的叉子

### 如何安装 @damien-thiesson/typeorm-fixtures-cli？

在项目目录运行 npm install @damien-thiesson/typeorm-fixtures-cli，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：typeorm（^0\.3\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 fixtures、fixtures-ts-node-commonjs、fixtures-ts-node-esm，可以用 npx fixtures 直接运行。

### @damien-thiesson/typeorm-fixtures-cli 支持 TypeScript 吗？

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

### @damien-thiesson/typeorm-fixtures-cli 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @damien-thiesson/typeorm-fixtures-cli 可以商用吗？

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

### @damien-thiesson/typeorm-fixtures-cli 的下载量有多少？

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

### @damien-thiesson/typeorm-fixtures-cli 还在维护吗？

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

