@ackplus/nest-seeder 1.1.16 → 2.0.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 +64 -0
- package/MIGRATION.md +89 -0
- package/QUICKSTART.md +45 -162
- package/README.md +91 -537
- package/dist/cli.js +595 -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 +38 -7
- 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/CHANGELOG.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
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.0.0] - 2026-06-15
|
|
9
|
+
|
|
10
|
+
A focused redesign that keeps the proven core (`@Factory`, `Seeder`, `DataFactory`) while
|
|
11
|
+
overhauling the CLI, configuration ergonomics, packaging, and documentation.
|
|
12
|
+
|
|
13
|
+
See the [Migration Guide](https://ack-solutions.github.io/nest-seeder/migration) for upgrade steps.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`nest-seed init`** — scaffolds a `seeder.config.ts`, a factory, and a seeder (`--orm typeorm|mongoose`, `--force`).
|
|
18
|
+
- **`nest-seed list`** — lists registered seeders and their `--name` aliases.
|
|
19
|
+
- **Config auto-discovery** — the CLI finds `seeder.config.{ts,js,cjs,mjs}` automatically; `--config` is now optional.
|
|
20
|
+
- **`--dry-run`** — preview which seeders would run without writing data.
|
|
21
|
+
- **`--continue-on-error`** — keep going when a seeder throws instead of aborting.
|
|
22
|
+
- **`--context <json>`** — forward arbitrary JSON to every seeder via `options.context`.
|
|
23
|
+
- **`@SeederName('name')`** decorator and `getSeederName()` helper for stable, minification-safe seeder names.
|
|
24
|
+
- **`defineSeederConfig()`** — a typed identity helper for `seeder.config.ts`.
|
|
25
|
+
- **`DataFactory` `generateOne()`** convenience method.
|
|
26
|
+
- **Factory inheritance** — a factory that `extends` a base factory inherits its `@Factory` properties.
|
|
27
|
+
- **Dual ESM + CJS build** with a proper `exports` map and full TypeScript declarations.
|
|
28
|
+
- **Unit test suite** for the library (factory, service, decorators).
|
|
29
|
+
- **Documentation site** built with VitePress, plus this changelog and a migration guide.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **CLI** rewritten with subcommands (`run`/`init`/`list`) and clearer, colorized output.
|
|
34
|
+
- **Logging** now uses the NestJS `Logger` instead of raw `console.*`.
|
|
35
|
+
- **Refresh** drops seeders in **reverse order** (foreign-key safe) before reseeding.
|
|
36
|
+
- **`drop()` is now optional** on the `Seeder` interface; seeders without it are skipped during refresh.
|
|
37
|
+
- **Factory overrides** now always appear in the generated record — including keys that are not
|
|
38
|
+
`@Factory` properties (e.g. a foreign key passed in a seeder).
|
|
39
|
+
- **`dependsOn`** is resolved transitively and is no longer sensitive to declaration order.
|
|
40
|
+
- **Build tooling** switched to `tsup`. Node `>= 18` is now required.
|
|
41
|
+
- `--dummyData` flag renamed to `--dummy-data` (the `options.dummyData` value is still delivered, deprecated).
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- Overrides for non-decorated properties were silently dropped, causing `NOT NULL` failures when
|
|
46
|
+
seeding relationships (e.g. `factory.generate(3, { authorId })`).
|
|
47
|
+
- Transitive `dependsOn` chains were not fully resolved.
|
|
48
|
+
- Generated property order was reversed relative to declaration order.
|
|
49
|
+
- Seeder selection mutated the shared options object in place.
|
|
50
|
+
|
|
51
|
+
### Removed
|
|
52
|
+
|
|
53
|
+
- The bundled `examples/` directory and `seeder.config.example.ts` — replaced by the
|
|
54
|
+
[documentation site](https://ack-solutions.github.io/nest-seeder/) and the runnable example app.
|
|
55
|
+
- Deep imports of internal files (`@ackplus/nest-seeder/dist/lib/...`) are no longer supported;
|
|
56
|
+
import from the package root.
|
|
57
|
+
|
|
58
|
+
## [1.1.16] - 2026-01-04
|
|
59
|
+
|
|
60
|
+
- Last release of the v1 line. Iterative fixes and packaging tweaks across the `1.1.x` series
|
|
61
|
+
(including the `1.1.15-beta.*` pre-releases).
|
|
62
|
+
|
|
63
|
+
[2.0.0]: https://github.com/ack-solutions/nest-seeder/releases/tag/2.0.0
|
|
64
|
+
[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,175 +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
|
-
> **Note:** The seeder configuration is independent and does not require importing your main `AppModule`.
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
// seeder.config.ts (in project root)
|
|
78
|
+
```ts
|
|
91
79
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
92
|
-
import {
|
|
93
|
-
import { User } from './src/entities/user.entity';
|
|
94
|
-
import { UserSeeder } from './src/seeders/user.seeder';
|
|
95
|
-
import * as dotenv from 'dotenv';
|
|
96
|
-
|
|
97
|
-
dotenv.config();
|
|
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';
|
|
98
83
|
|
|
99
|
-
export default {
|
|
84
|
+
export default defineSeederConfig({
|
|
100
85
|
imports: [
|
|
101
|
-
|
|
102
|
-
isGlobal: true,
|
|
103
|
-
}),
|
|
104
|
-
TypeOrmModule.forRootAsync({
|
|
105
|
-
imports: [ConfigModule],
|
|
106
|
-
inject: [ConfigService],
|
|
107
|
-
useFactory: (config: ConfigService) => ({
|
|
108
|
-
type: 'postgres',
|
|
109
|
-
host: config.get<string>('DB_HOST'),
|
|
110
|
-
port: config.get<number>('DB_PORT'),
|
|
111
|
-
username: config.get<string>('DB_USERNAME'),
|
|
112
|
-
password: config.get<string>('DB_PASSWORD'),
|
|
113
|
-
database: config.get<string>('DB_DATABASE'),
|
|
114
|
-
entities: [User],
|
|
115
|
-
synchronize: true,
|
|
116
|
-
}),
|
|
117
|
-
}),
|
|
86
|
+
TypeOrmModule.forRoot({ type: 'sqlite', database: 'db.sqlite', entities: [User], synchronize: true }),
|
|
118
87
|
TypeOrmModule.forFeature([User]),
|
|
119
88
|
],
|
|
120
89
|
seeders: [UserSeeder],
|
|
121
|
-
};
|
|
90
|
+
});
|
|
122
91
|
```
|
|
123
92
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Add to `package.json`:
|
|
127
|
-
|
|
128
|
-
```json
|
|
129
|
-
{
|
|
130
|
-
"scripts": {
|
|
131
|
-
"seed": "node -r ts-node/register -r tsconfig-paths/register ./node_modules/@ackplus/nest-seeder/dist/cli.js -c ./seeder.config.ts",
|
|
132
|
-
"seed:refresh": "npm run seed -- --refresh"
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Run it:
|
|
93
|
+
**4. Run**
|
|
138
94
|
|
|
139
95
|
```bash
|
|
140
|
-
npm run seed
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
**Output:**
|
|
144
|
-
```
|
|
145
|
-
🌱 Starting NestJS Seeder...
|
|
146
|
-
📁 Loading configuration from: seeder.config.ts
|
|
147
|
-
[Nest] Starting Nest application...
|
|
148
|
-
[Nest] TypeOrmModule dependencies initialized
|
|
149
|
-
✅ Seeded 10 users
|
|
96
|
+
npm run seed # seed
|
|
97
|
+
npm run seed -- --refresh # drop (reverse order) then reseed
|
|
98
|
+
nest-seed list # see available seeders
|
|
150
99
|
```
|
|
151
100
|
|
|
152
|
-
##
|
|
153
|
-
|
|
154
|
-
You've successfully seeded your database!
|
|
155
|
-
|
|
156
|
-
## 📚 Next Steps
|
|
157
|
-
|
|
158
|
-
### Run with options:
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
# Drop and reseed
|
|
162
|
-
npm run seed:refresh
|
|
163
|
-
|
|
164
|
-
# Run specific seeder
|
|
165
|
-
npm run seed -- --name UserSeeder
|
|
166
|
-
|
|
167
|
-
# With dummy data flag
|
|
168
|
-
npm run seed -- --dummyData
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Add More Seeders
|
|
172
|
-
|
|
173
|
-
1. Create more factories and seeders
|
|
174
|
-
2. Add them to `seeder.config.ts`:
|
|
175
|
-
|
|
176
|
-
```typescript
|
|
177
|
-
export default {
|
|
178
|
-
imports: [/* ... */],
|
|
179
|
-
seeders: [
|
|
180
|
-
UserSeeder,
|
|
181
|
-
PostSeeder,
|
|
182
|
-
CommentSeeder,
|
|
183
|
-
],
|
|
184
|
-
};
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Watch Mode for Development
|
|
188
|
-
|
|
189
|
-
Add to `package.json`:
|
|
190
|
-
|
|
191
|
-
```json
|
|
192
|
-
{
|
|
193
|
-
"scripts": {
|
|
194
|
-
"seed:watch": "nodemon --watch src/seeders --watch src/factories --ext ts --exec \"npm run seed\""
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Run:
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
npm run seed:watch
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Now your database will auto-reseed when you modify seeders or factories!
|
|
206
|
-
|
|
207
|
-
## 💡 Tips
|
|
208
|
-
|
|
209
|
-
- **Start small**: Begin with one entity, then add more
|
|
210
|
-
- **Use factories**: They make generating data super easy
|
|
211
|
-
- **Order matters**: List seeders in dependency order
|
|
212
|
-
- **Drop method**: Always implement drop() to clear data
|
|
213
|
-
- **Environment variables**: Use them for database config
|
|
214
|
-
|
|
215
|
-
## 🔗 Resources
|
|
216
|
-
|
|
217
|
-
- [Full Documentation](./README.md)
|
|
218
|
-
- [Examples Directory](./examples/)
|
|
219
|
-
- [GitHub Repository](https://github.com/ackplus/nest-seeder)
|
|
220
|
-
|
|
221
|
-
---
|
|
101
|
+
## Next steps
|
|
222
102
|
|
|
223
|
-
|
|
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)
|