diff --git a/README.md b/README.md index 20e3127..fb48057 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ npm install pgstrap --save-dev - `npm run db:migrate` - Run pending migrations - `npm run db:reset` - Drop and recreate the database, then run all migrations -- `npm run db:generate` - Generate types and structure dumps. Use `pgstrap generate --pglite` to run migrations against an in-memory PGlite instance. +- `npm run db:generate` - Generate types and structure dumps. Defaults to an in-memory PGlite instance, so no Postgres needs to be running. To generate against a real Postgres (e.g. via `DATABASE_URL`), edit the script and drop `--pglite`. - `npm run db:create-migration` - Create a new migration file ### Configuration diff --git a/src/init.ts b/src/init.ts index b84f9cd..88b9d62 100644 --- a/src/init.ts +++ b/src/init.ts @@ -16,7 +16,10 @@ export const initPgstrap = async (ctx: Pick) => { pkg.scripts["db:migrate"] = "pgstrap migrate" pkg.scripts["db:reset"] = "pgstrap reset" - pkg.scripts["db:generate"] = "pgstrap generate" + // Default `db:generate` to PGlite so `bun run db:generate` doesn't require + // a Postgres instance running in the background. To generate against a real + // Postgres connection (e.g. DATABASE_URL), drop `--pglite` from this script. + pkg.scripts["db:generate"] = "pgstrap generate --pglite" pkg.scripts["db:create-migration"] = "pgstrap create-migration" if (!pkg.devDependencies) pkg.devDependencies = {} diff --git a/tests/init.test.ts b/tests/init.test.ts index cd4ec4b..23eb12a 100644 --- a/tests/init.test.ts +++ b/tests/init.test.ts @@ -25,6 +25,16 @@ test("initPgstrap writes scripts to package.json", async () => { ) expect(pkg.scripts["db:migrate"]).toBe("pgstrap migrate") expect(pkg.scripts["db:reset"]).toBe("pgstrap reset") - expect(pkg.scripts["db:generate"]).toBe("pgstrap generate") + // db:generate defaults to --pglite so users don't need Postgres running + // in the background to regenerate types/structure. See issue #2. + expect(pkg.scripts["db:generate"]).toBe("pgstrap generate --pglite") expect(pkg.scripts["db:create-migration"]).toBe("pgstrap create-migration") }) + +test("initPgstrap defaults db:generate to PGlite (no Postgres needed)", async () => { + await initPgstrap({ cwd: testDir }) + const pkg = JSON.parse( + fs.readFileSync(path.join(testDir, "package.json"), "utf8"), + ) + expect(pkg.scripts["db:generate"]).toContain("--pglite") +})