Package Exports
- @excli/orm-init
- @excli/orm-init/dist/index.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@excli/orm-init) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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.
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-initOr 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-initYou'll be asked about:
- Language — TypeScript or JavaScript
- Database — MySQL, MariaDB, PostgreSQL, SQLite, or MongoDB
- ORM/ODM — Your preferred ORM for the chosen database
- 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 --drizzleFlags
| 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.gitignoreare not generated. This is intentional so the tool integrates safely into both new and existing projects. Use@excli/dockerto 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 useprisma 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/expressScaffolds 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.