@ackplus/nest-seeder 1.1.17 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/MIGRATION.md +89 -0
- package/QUICKSTART.md +45 -149
- package/README.md +87 -521
- package/dist/cli.js +617 -235
- package/dist/cli.js.map +1 -1
- package/dist/index.d.mts +88 -0
- package/dist/index.d.ts +88 -8
- package/dist/index.js +417 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +390 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +46 -25
- package/dist/cli.d.ts +0 -3
- package/dist/lib/decorators/factory.decorator.d.ts +0 -6
- package/dist/lib/decorators/factory.decorator.js +0 -17
- package/dist/lib/decorators/factory.decorator.js.map +0 -1
- package/dist/lib/factory/data.factory.d.ts +0 -6
- package/dist/lib/factory/data.factory.js +0 -57
- package/dist/lib/factory/data.factory.js.map +0 -1
- package/dist/lib/index.d.ts +0 -4
- package/dist/lib/index.js +0 -21
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/interfaces/factory.interface.d.ts +0 -4
- package/dist/lib/interfaces/factory.interface.js +0 -3
- package/dist/lib/interfaces/factory.interface.js.map +0 -1
- package/dist/lib/interfaces/index.d.ts +0 -2
- package/dist/lib/interfaces/index.js +0 -19
- package/dist/lib/interfaces/index.js.map +0 -1
- package/dist/lib/interfaces/property-metadata.interface.d.ts +0 -6
- package/dist/lib/interfaces/property-metadata.interface.js +0 -3
- package/dist/lib/interfaces/property-metadata.interface.js.map +0 -1
- package/dist/lib/interfaces/seeder-module-async-options.interface.d.ts +0 -10
- package/dist/lib/interfaces/seeder-module-async-options.interface.js +0 -3
- package/dist/lib/interfaces/seeder-module-async-options.interface.js.map +0 -1
- package/dist/lib/interfaces/seeder-options-factory.interface.d.ts +0 -4
- package/dist/lib/interfaces/seeder-options-factory.interface.js +0 -3
- package/dist/lib/interfaces/seeder-options-factory.interface.js.map +0 -1
- package/dist/lib/seeder/seeder.d.ts +0 -10
- package/dist/lib/seeder/seeder.interface.d.ts +0 -9
- package/dist/lib/seeder/seeder.interface.js +0 -3
- package/dist/lib/seeder/seeder.interface.js.map +0 -1
- package/dist/lib/seeder/seeder.js +0 -40
- package/dist/lib/seeder/seeder.js.map +0 -1
- package/dist/lib/seeder/seeder.module.d.ts +0 -17
- package/dist/lib/seeder/seeder.module.js +0 -80
- package/dist/lib/seeder/seeder.module.js.map +0 -1
- package/dist/lib/seeder/seeder.service.d.ts +0 -10
- package/dist/lib/seeder/seeder.service.js +0 -73
- package/dist/lib/seeder/seeder.service.js.map +0 -1
- package/dist/lib/storages/factory.metadata.storage.d.ts +0 -16
- package/dist/lib/storages/factory.metadata.storage.js +0 -17
- package/dist/lib/storages/factory.metadata.storage.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/examples/post.seeder.example.ts +0 -65
- package/examples/product.factory.example.ts +0 -84
- package/examples/seed.script.example.ts +0 -32
- package/examples/seeder.config.example.ts +0 -50
- package/examples/user.factory.example.ts +0 -59
- package/examples/user.seeder.example.ts +0 -55
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@ackplus/nest-seeder` are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [2.1.0] - 2026-06-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`--project` / `-p`** CLI flag (and the `TS_NODE_PROJECT` environment variable) to point the
|
|
13
|
+
CLI's ts-node registration at your own `tsconfig.json`. Previously the CLI used
|
|
14
|
+
`skipProject: true`, so there was no clean way to control the compiler options used to load
|
|
15
|
+
`.ts` config files and entities.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- The CLI's default ts-node registration now uses **`strict: true`** (was `strict: false`), matching
|
|
20
|
+
how application code is normally compiled. With `strictNullChecks` disabled, some TypeScript
|
|
21
|
+
versions emit `design:type = Object` for string-literal-union columns (e.g.
|
|
22
|
+
`visibility: 'committee' | 'all-members'` with no explicit `@Column` type), which makes TypeORM
|
|
23
|
+
throw `DataTypeNotSupportedError: Data type "Object" … is not supported` on Postgres/MySQL — even
|
|
24
|
+
though the same entities compile fine under the app's own `strict` build. Pass
|
|
25
|
+
`--project ./tsconfig.json` (or set `TS_NODE_PROJECT`) to override.
|
|
26
|
+
|
|
27
|
+
### Notes
|
|
28
|
+
|
|
29
|
+
- The version-independent fix is to give enum/union columns an explicit column type, e.g.
|
|
30
|
+
`@Column({ type: 'varchar' })`, so TypeORM never relies on reflect-metadata inference. Thanks to
|
|
31
|
+
the reporter for the detailed analysis.
|
|
32
|
+
|
|
33
|
+
## [2.0.0] - 2026-06-15
|
|
34
|
+
|
|
35
|
+
A focused redesign that keeps the proven core (`@Factory`, `Seeder`, `DataFactory`) while
|
|
36
|
+
overhauling the CLI, configuration ergonomics, packaging, and documentation.
|
|
37
|
+
|
|
38
|
+
See the [Migration Guide](https://ack-solutions.github.io/nest-seeder/migration) for upgrade steps.
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **`nest-seed init`** — scaffolds a `seeder.config.ts`, a factory, and a seeder (`--orm typeorm|mongoose`, `--force`).
|
|
43
|
+
- **`nest-seed list`** — lists registered seeders and their `--name` aliases.
|
|
44
|
+
- **Config auto-discovery** — the CLI finds `seeder.config.{ts,js,cjs,mjs}` automatically; `--config` is now optional.
|
|
45
|
+
- **`--dry-run`** — preview which seeders would run without writing data.
|
|
46
|
+
- **`--continue-on-error`** — keep going when a seeder throws instead of aborting.
|
|
47
|
+
- **`--context <json>`** — forward arbitrary JSON to every seeder via `options.context`.
|
|
48
|
+
- **`@SeederName('name')`** decorator and `getSeederName()` helper for stable, minification-safe seeder names.
|
|
49
|
+
- **`defineSeederConfig()`** — a typed identity helper for `seeder.config.ts`.
|
|
50
|
+
- **`DataFactory` `generateOne()`** convenience method.
|
|
51
|
+
- **Factory inheritance** — a factory that `extends` a base factory inherits its `@Factory` properties.
|
|
52
|
+
- **Dual ESM + CJS build** with a proper `exports` map and full TypeScript declarations.
|
|
53
|
+
- **Unit test suite** for the library (factory, service, decorators).
|
|
54
|
+
- **Documentation site** built with VitePress, plus this changelog and a migration guide.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **CLI** rewritten with subcommands (`run`/`init`/`list`) and clearer, colorized output.
|
|
59
|
+
- **Logging** now uses the NestJS `Logger` instead of raw `console.*`.
|
|
60
|
+
- **Refresh** drops seeders in **reverse order** (foreign-key safe) before reseeding.
|
|
61
|
+
- **`drop()` is now optional** on the `Seeder` interface; seeders without it are skipped during refresh.
|
|
62
|
+
- **Factory overrides** now always appear in the generated record — including keys that are not
|
|
63
|
+
`@Factory` properties (e.g. a foreign key passed in a seeder).
|
|
64
|
+
- **`dependsOn`** is resolved transitively and is no longer sensitive to declaration order.
|
|
65
|
+
- **Build tooling** switched to `tsup`. Node `>= 18` is now required.
|
|
66
|
+
- `--dummyData` flag renamed to `--dummy-data` (the `options.dummyData` value is still delivered, deprecated).
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- Overrides for non-decorated properties were silently dropped, causing `NOT NULL` failures when
|
|
71
|
+
seeding relationships (e.g. `factory.generate(3, { authorId })`).
|
|
72
|
+
- Transitive `dependsOn` chains were not fully resolved.
|
|
73
|
+
- Generated property order was reversed relative to declaration order.
|
|
74
|
+
- Seeder selection mutated the shared options object in place.
|
|
75
|
+
|
|
76
|
+
### Removed
|
|
77
|
+
|
|
78
|
+
- The bundled `examples/` directory and `seeder.config.example.ts` — replaced by the
|
|
79
|
+
[documentation site](https://ack-solutions.github.io/nest-seeder/) and the runnable example app.
|
|
80
|
+
- Deep imports of internal files (`@ackplus/nest-seeder/dist/lib/...`) are no longer supported;
|
|
81
|
+
import from the package root.
|
|
82
|
+
|
|
83
|
+
## [1.1.16] - 2026-01-04
|
|
84
|
+
|
|
85
|
+
- Last release of the v1 line. Iterative fixes and packaging tweaks across the `1.1.x` series
|
|
86
|
+
(including the `1.1.15-beta.*` pre-releases).
|
|
87
|
+
|
|
88
|
+
[2.1.0]: https://github.com/ack-solutions/nest-seeder/releases/tag/2.1.0
|
|
89
|
+
[2.0.0]: https://github.com/ack-solutions/nest-seeder/releases/tag/2.0.0
|
|
90
|
+
[1.1.16]: https://github.com/ack-solutions/nest-seeder/releases/tag/1.1.16
|
package/MIGRATION.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Migrating from v1 to v2
|
|
2
|
+
|
|
3
|
+
`@ackplus/nest-seeder` v2 is a **focused redesign**. The core — the `@Factory` decorator, the
|
|
4
|
+
`Seeder` interface, and `DataFactory` — is unchanged, so most apps upgrade in a few minutes.
|
|
5
|
+
Breaking changes are concentrated in the **CLI**, **config ergonomics**, and **packaging**.
|
|
6
|
+
|
|
7
|
+
> 📖 Full, searchable guide: https://ack-solutions.github.io/nest-seeder/migration
|
|
8
|
+
|
|
9
|
+
## TL;DR
|
|
10
|
+
|
|
11
|
+
1. `npm install @ackplus/nest-seeder@^2`
|
|
12
|
+
2. Replace your long seed script with `"seed": "nest-seed"`.
|
|
13
|
+
3. Rename the `--dummyData` flag to `--dummy-data`.
|
|
14
|
+
4. If your `drop()` uses `repository.delete({})`, switch to `repository.createQueryBuilder().delete().execute()`.
|
|
15
|
+
|
|
16
|
+
Everything else is optional polish.
|
|
17
|
+
|
|
18
|
+
## At a glance
|
|
19
|
+
|
|
20
|
+
| Area | v1 | v2 |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| Run command | `node -r ts-node/register … dist/cli.js -c ./seeder.config.ts` | `nest-seed` (config auto-detected) |
|
|
23
|
+
| `--config` | Required | Optional (auto-discovers `seeder.config.{ts,js,cjs,mjs}`) |
|
|
24
|
+
| Dummy-data flag | `--dummyData` | `--dummy-data` (or the new `--context`) |
|
|
25
|
+
| Scaffolding | none | `nest-seed init` |
|
|
26
|
+
| Inspect seeders | none | `nest-seed list` |
|
|
27
|
+
| Preview | none | `nest-seed --dry-run` |
|
|
28
|
+
| `drop()` | required | optional |
|
|
29
|
+
| Refresh drop order | same as list | reverse of list (foreign-key safe) |
|
|
30
|
+
| Build output | CommonJS only | Dual ESM + CJS with an `exports` map |
|
|
31
|
+
|
|
32
|
+
## Steps
|
|
33
|
+
|
|
34
|
+
### 1. Update the dependency
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install @ackplus/nest-seeder@^2 @faker-js/faker
|
|
38
|
+
npm install -D ts-node typescript # for .ts config files
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Simplify your run script
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"scripts": {
|
|
46
|
+
"seed": "nest-seed",
|
|
47
|
+
"seed:refresh": "nest-seed --refresh"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The verbose v1 command still works; the `dist/cli.js` path is preserved.
|
|
53
|
+
|
|
54
|
+
### 3. Rename the dummy-data flag
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
nest-seed --dummy-data # was: --dummyData
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
For new code prefer the general-purpose `--context '{ "size": "large" }'`, read via `options.context`.
|
|
61
|
+
|
|
62
|
+
### 4. Fix your `drop()` (⚠️ important)
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
// before — modern TypeORM throws "Empty criteria(s) are not allowed"
|
|
66
|
+
await this.userRepository.delete({});
|
|
67
|
+
|
|
68
|
+
// after
|
|
69
|
+
await this.userRepository.createQueryBuilder().delete().execute();
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Mongoose is unchanged: `await this.userModel.deleteMany({})`.
|
|
73
|
+
|
|
74
|
+
### 5. Optional polish
|
|
75
|
+
|
|
76
|
+
- Wrap your config in `defineSeederConfig({ … })` for full type-checking.
|
|
77
|
+
- Add `@SeederName('users')` to seeders for stable `--name users` selection (run `nest-seed list` to verify).
|
|
78
|
+
|
|
79
|
+
## Behavior changes
|
|
80
|
+
|
|
81
|
+
- **Overrides are always applied** — `factory.generate(3, { authorId })` now includes `authorId`
|
|
82
|
+
even though it isn't a `@Factory` field (v1 dropped it; this fixes relationship seeding).
|
|
83
|
+
- **`dependsOn` is transitive** and order-independent.
|
|
84
|
+
- **Factory inheritance works** — `extends` a base factory to reuse its fields.
|
|
85
|
+
- **Refresh drops in reverse order**; keep your seeder list parent-first.
|
|
86
|
+
- **`drop()` is optional**.
|
|
87
|
+
- **Deep imports** (`@ackplus/nest-seeder/dist/lib/...`) are gone — import from the package root.
|
|
88
|
+
|
|
89
|
+
Questions? https://github.com/ack-solutions/nest-seeder/issues
|
package/QUICKSTART.md
CHANGED
|
@@ -1,45 +1,41 @@
|
|
|
1
|
-
# ⚡ Quick Start
|
|
1
|
+
# ⚡ Quick Start
|
|
2
2
|
|
|
3
|
-
Get
|
|
3
|
+
Get seeding with `@ackplus/nest-seeder` in a few minutes.
|
|
4
|
+
For the full guide, see **[ack-solutions.github.io/nest-seeder](https://ack-solutions.github.io/nest-seeder/guide/getting-started)**.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Install
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
9
|
npm install @ackplus/nest-seeder @faker-js/faker
|
|
9
|
-
npm install -D ts-node typescript
|
|
10
|
+
npm install -D ts-node typescript # for .ts config files
|
|
10
11
|
```
|
|
11
12
|
|
|
12
|
-
##
|
|
13
|
+
## Scaffold (fastest)
|
|
13
14
|
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@Entity('users')
|
|
19
|
-
export class User {
|
|
20
|
-
@PrimaryGeneratedColumn()
|
|
21
|
-
id: number;
|
|
15
|
+
```bash
|
|
16
|
+
npx nest-seed init
|
|
17
|
+
```
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
name: string;
|
|
19
|
+
This creates `seeder.config.ts`, a factory, and a seeder. Point the config at your database, then:
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
```json
|
|
22
|
+
{ "scripts": { "seed": "nest-seed" } }
|
|
23
|
+
```
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
25
|
+
```bash
|
|
26
|
+
npm run seed
|
|
32
27
|
```
|
|
33
28
|
|
|
34
|
-
##
|
|
29
|
+
## Or wire it up by hand
|
|
30
|
+
|
|
31
|
+
**1. Factory** — `src/database/factories/user.factory.ts`
|
|
35
32
|
|
|
36
|
-
```
|
|
37
|
-
// src/factories/user.factory.ts
|
|
33
|
+
```ts
|
|
38
34
|
import { Factory } from '@ackplus/nest-seeder';
|
|
39
35
|
|
|
40
36
|
export class UserFactory {
|
|
41
|
-
@Factory((faker) => faker.person.
|
|
42
|
-
|
|
37
|
+
@Factory((faker) => faker.person.firstName())
|
|
38
|
+
firstName: string;
|
|
43
39
|
|
|
44
40
|
@Factory((faker) => faker.internet.email())
|
|
45
41
|
email: string;
|
|
@@ -49,162 +45,62 @@ export class UserFactory {
|
|
|
49
45
|
}
|
|
50
46
|
```
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
**2. Seeder** — `src/database/seeders/user.seeder.ts`
|
|
53
49
|
|
|
54
|
-
```
|
|
55
|
-
// src/seeders/user.seeder.ts
|
|
50
|
+
```ts
|
|
56
51
|
import { Injectable } from '@nestjs/common';
|
|
57
52
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
58
53
|
import { Repository } from 'typeorm';
|
|
59
|
-
import { Seeder, DataFactory } from '@ackplus/nest-seeder';
|
|
54
|
+
import { Seeder, SeederName, DataFactory } from '@ackplus/nest-seeder';
|
|
60
55
|
import { User } from '../entities/user.entity';
|
|
61
56
|
import { UserFactory } from '../factories/user.factory';
|
|
62
57
|
|
|
63
58
|
@Injectable()
|
|
59
|
+
@SeederName('users')
|
|
64
60
|
export class UserSeeder implements Seeder {
|
|
65
61
|
constructor(
|
|
66
|
-
@InjectRepository(User)
|
|
67
|
-
private readonly userRepository: Repository<User>,
|
|
62
|
+
@InjectRepository(User) private readonly userRepository: Repository<User>,
|
|
68
63
|
) {}
|
|
69
64
|
|
|
70
65
|
async seed(): Promise<void> {
|
|
71
|
-
const
|
|
72
|
-
const users = factory.generate(10);
|
|
66
|
+
const users = DataFactory.createForClass(UserFactory).generate(10);
|
|
73
67
|
await this.userRepository.save(users);
|
|
74
|
-
console.log('✅ Seeded 10 users');
|
|
75
68
|
}
|
|
76
69
|
|
|
77
70
|
async drop(): Promise<void> {
|
|
78
|
-
await this.userRepository.delete(
|
|
71
|
+
await this.userRepository.createQueryBuilder().delete().execute();
|
|
79
72
|
}
|
|
80
73
|
}
|
|
81
74
|
```
|
|
82
75
|
|
|
83
|
-
|
|
76
|
+
**3. Config** — `seeder.config.ts`
|
|
84
77
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
// seeder.config.ts (in project root)
|
|
78
|
+
```ts
|
|
89
79
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
90
|
-
import {
|
|
91
|
-
import {
|
|
80
|
+
import { defineSeederConfig } from '@ackplus/nest-seeder';
|
|
81
|
+
import { User } from './src/database/entities/user.entity';
|
|
82
|
+
import { UserSeeder } from './src/database/seeders/user.seeder';
|
|
92
83
|
|
|
93
|
-
export default {
|
|
84
|
+
export default defineSeederConfig({
|
|
94
85
|
imports: [
|
|
95
|
-
TypeOrmModule.forRoot({
|
|
96
|
-
type: 'postgres',
|
|
97
|
-
host: 'localhost',
|
|
98
|
-
port: 5432,
|
|
99
|
-
username: 'postgres',
|
|
100
|
-
password: 'postgres',
|
|
101
|
-
database: 'mydb',
|
|
102
|
-
entities: [User],
|
|
103
|
-
synchronize: true,
|
|
104
|
-
}),
|
|
86
|
+
TypeOrmModule.forRoot({ type: 'sqlite', database: 'db.sqlite', entities: [User], synchronize: true }),
|
|
105
87
|
TypeOrmModule.forFeature([User]),
|
|
106
88
|
],
|
|
107
89
|
seeders: [UserSeeder],
|
|
108
|
-
};
|
|
90
|
+
});
|
|
109
91
|
```
|
|
110
92
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Add to `package.json`:
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"scripts": {
|
|
118
|
-
"seed": "nest-seed -c seeder.config.ts",
|
|
119
|
-
"seed:refresh": "nest-seed -c seeder.config.ts --refresh"
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Run it:
|
|
93
|
+
**4. Run**
|
|
125
94
|
|
|
126
95
|
```bash
|
|
127
|
-
npm run seed
|
|
96
|
+
npm run seed # seed
|
|
97
|
+
npm run seed -- --refresh # drop (reverse order) then reseed
|
|
98
|
+
nest-seed list # see available seeders
|
|
128
99
|
```
|
|
129
100
|
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
🌱 Starting NestJS Seeder...
|
|
133
|
-
📁 Loading configuration from: seeder.config.ts
|
|
134
|
-
[Nest] Starting Nest application...
|
|
135
|
-
[Nest] TypeOrmModule dependencies initialized
|
|
136
|
-
✅ Seeded 10 users
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## 🎉 Success!
|
|
140
|
-
|
|
141
|
-
You've successfully seeded your database!
|
|
142
|
-
|
|
143
|
-
## 📚 Next Steps
|
|
144
|
-
|
|
145
|
-
### Run with options:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
# Drop and reseed
|
|
149
|
-
npm run seed:refresh
|
|
150
|
-
|
|
151
|
-
# Run specific seeder
|
|
152
|
-
npm run seed -- --name UserSeeder
|
|
153
|
-
|
|
154
|
-
# With dummy data flag
|
|
155
|
-
npm run seed -- --dummyData
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Add More Seeders
|
|
159
|
-
|
|
160
|
-
1. Create more factories and seeders
|
|
161
|
-
2. Add them to `seeder.config.ts`:
|
|
162
|
-
|
|
163
|
-
```typescript
|
|
164
|
-
export default {
|
|
165
|
-
imports: [/* ... */],
|
|
166
|
-
seeders: [
|
|
167
|
-
UserSeeder,
|
|
168
|
-
PostSeeder,
|
|
169
|
-
CommentSeeder,
|
|
170
|
-
],
|
|
171
|
-
};
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Watch Mode for Development
|
|
175
|
-
|
|
176
|
-
Add to `package.json`:
|
|
177
|
-
|
|
178
|
-
```json
|
|
179
|
-
{
|
|
180
|
-
"scripts": {
|
|
181
|
-
"seed:watch": "nodemon --watch src/seeders --watch src/factories --ext ts --exec nest-seed -c seeder.config.ts"
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Run:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
npm run seed:watch
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
Now your database will auto-reseed when you modify seeders or factories!
|
|
193
|
-
|
|
194
|
-
## 💡 Tips
|
|
195
|
-
|
|
196
|
-
- **Start small**: Begin with one entity, then add more
|
|
197
|
-
- **Use factories**: They make generating data super easy
|
|
198
|
-
- **Order matters**: List seeders in dependency order
|
|
199
|
-
- **Drop method**: Always implement drop() to clear data
|
|
200
|
-
- **Environment variables**: Use them for database config
|
|
201
|
-
|
|
202
|
-
## 🔗 Resources
|
|
203
|
-
|
|
204
|
-
- [Full Documentation](./README.md)
|
|
205
|
-
- [Examples Directory](./examples/)
|
|
206
|
-
- [GitHub Repository](https://github.com/ackplus/nest-seeder)
|
|
207
|
-
|
|
208
|
-
---
|
|
101
|
+
## Next steps
|
|
209
102
|
|
|
210
|
-
|
|
103
|
+
- [Factories](https://ack-solutions.github.io/nest-seeder/guide/factories)
|
|
104
|
+
- [Seeders](https://ack-solutions.github.io/nest-seeder/guide/seeders)
|
|
105
|
+
- [CLI reference](https://ack-solutions.github.io/nest-seeder/guide/cli)
|
|
106
|
+
- [Migration v1 → v2](https://ack-solutions.github.io/nest-seeder/migration)
|