Skip to content

pxycknomdictator/excli-orm-init

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

93 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ORM Init CLI Tool

A CLI tool for setting up popular SQL and NoSQL ORMs/ODMs in Node.js projects, with support for both JavaScript and TypeScript.

npm version License: ISC Node.js TypeScript

Part of the excli ecosystem.


Why Choose This Tool?

Stop wiring ORM boilerplate manually. @excli/orm-init gets your database layer production-ready in seconds, whether you're starting fresh or dropping into an existing project.

Built for modern development:

  • πŸ—„οΈ SQL β€” MySQL, MariaDB, PostgreSQL, SQLite
  • πŸƒ NoSQL β€” MongoDB
  • πŸ”— ORMs/ODMs β€” Prisma, Sequelize, TypeORM, Drizzle, Mongoose
  • πŸš€ TypeScript & JavaScript support
  • πŸ“¦ Works with npm, yarn, pnpm, and bun
  • ⚑ Interactive and flag-based modes

Getting Started

No installation needed! Just run:

npx @excli/orm-init

Or install globally:

npm install -g @excli/orm-init
excli-orm-init [flags]

Requirements

  • Node.js 20 or higher
  • A running database (local or via @excli/docker)

Usage

Interactive Mode

Run the CLI and follow the prompts:

npx @excli/orm-init

You'll be asked about:

  1. Language β€” TypeScript or JavaScript
  2. Database β€” MySQL, MariaDB, PostgreSQL, SQLite, or MongoDB
  3. ORM/ODM β€” Your preferred ORM for the chosen database
  4. Package Manager β€” npm, yarn, pnpm, or bun

Flag-Based Mode

Skip the prompts and pass everything directly:

# TypeScript + PostgreSQL + Prisma + pnpm
npx @excli/orm-init --ts --pnpm --postgres --prisma

# JavaScript + MongoDB + Mongoose + npm
npx @excli/orm-init --js --npm --mongodb --mongoose

# TypeScript + MySQL + TypeORM + yarn
npx @excli/orm-init --ts --yarn --mysql --typeorm

# TypeScript + PostgreSQL + Drizzle + bun
npx @excli/orm-init --ts --bun --postgres --drizzle

# JavaScript + MySQL + Sequelize + pnpm
npx @excli/orm-init --js --pnpm --mysql --sequelize

# TypeScript + SQLite + Drizzle + pnpm
npx @excli/orm-init --ts --pnpm --sqlite --drizzle

Flags

Category Flag Description
Language --ts / --js TypeScript or JavaScript
Database --mysql --mariadb --postgres --mongodb --sqlite Target database
ORM/ODM --prisma --sequelize --typeorm --drizzle --mongoose ORM/ODM to configure
Package Manager --npm --yarn --pnpm --bun Package manager to use

What's Included

Generated Files

After running the CLI, you get:

  • ORM config file β€” pre-configured database connection
  • Schema / Model file β€” starter schema or model for your chosen ORM

Note: .env, .env.example, and .gitignore are not generated. This is intentional so the tool integrates safely into both new and existing projects. Use @excli/docker to auto-generate a complete .env, or create one manually.

Compatibility Matrix

ORM / ODM MySQL MariaDB PostgreSQL SQLite MongoDB
Prisma βœ… βœ… βœ… βœ… βœ…
Sequelize βœ… βœ… βœ… βœ… ❌
TypeORM βœ… βœ… βœ… βœ… βœ…
Drizzle βœ… βœ… βœ… βœ… ❌
Mongoose ❌ ❌ ❌ ❌ βœ…

Incompatible combinations are caught at runtime β€” the CLI will prompt you to correct them.


Known Issues & Gotchas

Sequelize + MariaDB β€” Connection String Prefix

The DATABASE_URL must use the mariadb:// prefix, not mysql://. Using the wrong prefix causes Sequelize to load the wrong driver.

# ❌ Wrong
DATABASE_URL="mysql://root:password@localhost:3306/mydb"

# βœ… Correct
DATABASE_URL="mariadb://root:password@localhost:3306/mydb"

Prisma β€” Shadow Database Error

During prisma migrate dev, Prisma requires a shadow database and needs CREATE DATABASE privileges. Use root credentials for local development.

# βœ… Use root credentials for migrations
DATABASE_URL="mysql://root:rootpassword@localhost:3306/mydb"

This only applies to prisma migrate dev. Production deployments use prisma migrate deploy, which does not require shadow database creation.

TypeORM β€” synchronize: true in Production

Never enable synchronize: true in production β€” it can drop or alter columns on startup. Always use migrations instead.

// ❌ Development only
synchronize: true;

// βœ… Production
synchronize: false;

Drizzle β€” Migration Folder

Drizzle outputs SQL migrations to a drizzle/ folder. Commit this folder to version control β€” it serves as your migration history.

Mongoose β€” No Migrations

MongoDB is schemaless; existing documents are not updated when your Mongoose schema changes. Handle data migrations manually.


Troubleshooting

Problem Solution
Prisma shadow database error Use root credentials in DATABASE_URL
Incompatible ORM + database Check the compatibility matrix
.env not generated Expected β€” create manually or use @excli/docker
TypeORM decorators failing in JS Use TypeScript; JS decorator support is limited
Prisma Client not found Run npx prisma generate after setup
Connection refused Ensure your database is running before testing

excli Ecosystem

Package Description
@excli/express Express app generator for JS/TS
@excli/docker Docker Compose + .env generator
@excli/orm-init ORM/ODM setup (this package)

Full project setup in one command:

npx @excli/express

Scaffolds a complete Express app with Docker, a running database, and a configured ORM.


Contributing

Bug reports, feature requests, and pull requests are welcome. Please read the Contributing Guide before opening a PR.


License

ISC License β€” see LICENSE for details.

Author

Noman
πŸ“§ pxycknomdictator@gmail.com
πŸ™ @pxycknomdictator


Happy coding! Built with ❀️ for developers who value productivity.

About

A CLI tool for setting up popular SQL and NoSQL ORMs/ODMs in Node.js projects, with support for both JavaScript and TypeScript.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors