Command-line interface tool for MikroORM TypeScript ORM providing database management, migrations, schema operations, and entity generation
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
MikroORM CLI seeding system for populating databases with initial or test data. Provides commands for creating seeder classes and executing them to insert structured data into the database.
Executes a seeder class to populate the database with data. Supports both explicit seeder specification and default seeder execution.
/**
* Run seeder class command
*/
command: "seeder:run"
interface SeederRunOptions extends BaseArgs {
class?: string; // Seeder class name to execute (--class / -c)
}Usage Examples:
# Run default seeder (from configuration)
mikro-orm seeder:run
# Run specific seeder class
mikro-orm seeder:run --class UserSeeder
# Run seeder with custom config
mikro-orm seeder:run --class TestDataSeeder --config ./test.config.js
# Run for specific context
mikro-orm seeder:run --class ProductionSeeder --context productionCreates a new seeder class file with proper structure and naming conventions. Handles class name formatting and file generation.
/**
* Create new seeder class command
*/
command: "seeder:create <seeder>"
interface CreateSeederOptions extends BaseArgs {
seeder: string; // Seeder name (required positional argument)
}Usage Examples:
# Create seeder with simple name
mikro-orm seeder:create User
# Create seeder with descriptive name
mikro-orm seeder:create TestData
# Create seeder that will be named "UserSeeder"
mikro-orm seeder:create UserSeeder
# Create with kebab-case name (becomes "UserDataSeeder")
mikro-orm seeder:create user-dataGenerated seeder classes follow this structure:
import { Seeder } from '@mikro-orm/seeder';
import { EntityManager } from '@mikro-orm/core';
export class UserSeeder extends Seeder {
async run(em: EntityManager): Promise<void> {
// Seeder implementation goes here
// Example:
// const user = em.create(User, {
// name: 'John Doe',
// email: 'john@example.com'
// });
}
}The seeder creation command automatically formats class names:
// Input -> Generated Class Name
"user" -> "UserSeeder"
"test-data" -> "TestDataSeeder"
"UserSeeder" -> "UserSeeder"
"product-catalog" -> "ProductCatalogSeeder"
"admin" -> "AdminSeeder"All seeder commands support:
--config: Path to ORM configuration file(s)--contextName / --context: Configuration context name--class / -c: Specify seeder class name to execute
<seeder>: Required positional argument for seeder name
import { Seeder } from '@mikro-orm/seeder';
import { EntityManager } from '@mikro-orm/core';
import { User } from '../entities/User';
export class UserSeeder extends Seeder {
async run(em: EntityManager): Promise<void> {
const users = [
{ name: 'Alice Johnson', email: 'alice@example.com', role: 'admin' },
{ name: 'Bob Smith', email: 'bob@example.com', role: 'user' },
{ name: 'Carol Davis', email: 'carol@example.com', role: 'moderator' }
];
for (const userData of users) {
const user = em.create(User, userData);
}
await em.flush();
}
}import { Seeder } from '@mikro-orm/seeder';
import { EntityManager } from '@mikro-orm/core';
import { User } from '../entities/User';
import { Post } from '../entities/Post';
export class BlogSeeder extends Seeder {
async run(em: EntityManager): Promise<void> {
// Create users first
const author = em.create(User, {
name: 'Jane Author',
email: 'jane@example.com'
});
await em.flush(); // Flush to get user ID
// Create posts with relationships
const posts = [
{ title: 'First Post', content: 'Content...', author },
{ title: 'Second Post', content: 'More content...', author }
];
for (const postData of posts) {
em.create(Post, postData);
}
await em.flush();
}
}Seeder system uses these configuration options:
interface SeederConfiguration {
seeder: {
path?: string; // Path to seeder files directory
defaultSeeder?: string; // Default seeder class name for seeder:run
glob?: string; // Glob pattern for finding seeder files
emit?: 'ts' | 'js'; // File type to generate
};
}// In your MikroORM config
export default {
// ... other config
seeder: {
path: './src/seeders',
defaultSeeder: 'DatabaseSeeder',
glob: '!(*.d).{js,ts}',
emit: 'ts'
}
};