npm.io
0.6.5 • Published yesterdayCLI

@joakimbugge/mikroorm-seeder

Licence
MIT
Version
0.6.5
Deps
2
Size
101 kB
Vulns
0
Weekly
0

mikroorm-seeder

Decorator-based entity seeding for MikroORM. Annotate your entity properties with @Seed(), then create or persist fully populated entity graphs with a single function call — including relations, embedded types, and circular guards.

CI Coverage

Coded by AI. Reviewed by humans.

Full documentation · API reference


Installation

@mikro-orm/core and reflect-metadata are peer dependencies.

# npm
npm install @joakimbugge/mikroorm-seeder @mikro-orm/core reflect-metadata

# yarn
yarn add @joakimbugge/mikroorm-seeder @mikro-orm/core reflect-metadata

# pnpm
pnpm add @joakimbugge/mikroorm-seeder @mikro-orm/core reflect-metadata

Enable legacy decorators in your tsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

Note: Only legacy decorators are supported. ES decorators (TC39) are not currently supported.

Quick example

Annotate entity properties with @Seed(), organize seeders into @Seeder classes, and run them with runSeeders:

import { Entity, PrimaryKey, Property, OneToMany } from '@mikro-orm/decorators/legacy'
import { faker } from '@faker-js/faker'
import { Seed, Seeder, runSeeders, seed } from '@joakimbugge/mikroorm-seeder'
import type { SeederInterface, SeedContext } from '@joakimbugge/mikroorm-seeder'

@Entity()
class Author {
  @PrimaryKey()
  id!: number

  @Seed(() => faker.person.fullName())
  @Property()
  name!: string

  @Seed({ count: 3 })
  @OneToMany(() => Book, (b) => b.author)
  books!: Book[]
}

@Seeder()
class AuthorSeeder implements SeederInterface {
  async run(ctx: SeedContext) {
    await seed(Author).saveMany(10, ctx)
  }
}

await runSeeders([AuthorSeeder], { em })

License

MIT