Skip to content

CLI

The jsorm binary handles initialization, SQL generation, health checks, and migration orchestration.

Terminal window
jsorm help

Bootstrap a project with:

Terminal window
pnpm dlx @jsorm/core init
# or
npx -p @jsorm/core jsorm init

jsorm init now:

  1. Detects whether src/schema/ exists — prompts for schema path only when missing.
  2. Generates starter schema files (only if they don’t exist).
  3. Loops database/adapters setup (you can add multiple databases). If a jsorm.config.ts already exists, existing connections are merged in.
  4. Writes jsorm.config.ts.
  5. Generates runtime helpers (db.ts by default, jsormdb.ts fallback when needed).
  6. Verifies bootstrap and worker readiness before success output.

Use --no-migrations to skip migration scaffolding (no .migrations/, no migrations config).

When jsorm.config.ts defines defaults, commands need no extra arguments:

Terminal window
jsorm db:check
jsorm migrate:status
jsorm migrate
jsorm migrate:up
jsorm migrate:down
jsorm table:create
jsorm table:create User
jsorm migrate:statement
jsorm migrate:statement initUsers
jsorm migrate:generate

If not using config-first:

Terminal window
jsorm migrate ./dist/schema.js ormSource
jsorm migrate:up ./dist/schema.js ormSource
jsorm migrate:down ./dist/schema.js ormSource
jsorm migrate:status ./dist/schema.js ormSource
jsorm db:check ./dist/schema.js connectionSource
jsorm table:create ./dist/schema.js User
jsorm migrate:statement ./dist/schema.js initUsers
jsorm migrate:generate ./dist/schema.js generateSource

Compile first:

Terminal window
tsc && jsorm migrate:status ./dist/schema.js ormSource
CommandSafe in productionNotes
migrate✅ YesApplies pending migrations only
migrate:up✅ YesOne step at a time
migrate:status✅ YesRead-only
db:check✅ YesRead-only
migrate:down⚠️ GuardedRequires JSORM_ALLOW_UNSAFE_OPERATIONS=true
db:fresh❌ BlockedDevelopment only
db:rollback❌ BlockedDevelopment only
Terminal window
jsorm migrate:generate

Flow:

  1. Read models from config.
  2. Load .migrations/schema.json.
  3. Build AST diff.
  4. Classify changes (safe, review_required, dangerous).
  5. Emit migration file.
  6. Review before applying.

If the engine is missing, CLI stops with explicit action hints:

[JSORM ENGINE MISSING] Run: pnpx jsorm init

Use explicit path in CI/container environments:

Terminal window
JSORM_ENGINE_PATH=/path/to/jsorm-engine jsorm migrate:status

Debug mode:

Terminal window
JSORM_DEBUG=1 jsorm migrate:status
  1. Use pnpm dlx @jsorm/core init for new projects.
  2. Keep db:check in deploy verification.
  3. Keep destructive commands out of production automation.
  4. Run migrate:status during deployments.
  5. Prefer explicit runtime startup (start*Jsorm() or createJsorm().init()) in app code.