A Node.js library to manage Prisma ORM migrations like other ORMs
npm install prisma-migrations> Rollback and programmatic migrations for Prisma



Adds up/down migrations, rollback, and programmatic API to Prisma. Compatible with Prisma 5, 6, and 7.
| Feature | Prisma Migrate | This Tool |
|---------|---------------|-----------|
| Run migrations forward | Yes | Yes |
| Rollback migrations | No | Yes |
| Run from Node.js code | No | Yes |
| Step-by-step control | No | Yes |
Uses Prisma's _prisma_migrations table. Works alongside prisma migrate.
``bash`
npm install prisma-migrations @prisma/client prisma
`bashCreate a migration
npx prisma-migrations create add_users_table
Migration file (
prisma/migrations/[timestamp]_add_users_table/migration.sql):`sql
-- Migration: Up
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL
);-- Migration: Down
DROP TABLE IF EXISTS users;
`CLI
`bash
npx prisma-migrations up # Run all pending
npx prisma-migrations up --steps 2 # Run next 2
npx prisma-migrations down # Rollback last
npx prisma-migrations down --steps 3 # Rollback last 3
npx prisma-migrations status # Check status
npx prisma-migrations reset --force # Rollback all
`Programmatic API
`typescript
import { Migrations } from 'prisma-migrations';
import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();
const migrations = new Migrations(prisma);
await migrations.up(); // Run all pending
await migrations.down(); // Rollback last
await migrations.pending(); // Get pending list
await prisma.$disconnect();
`Production Safety
- Transactions: Migrations run in database transactions with automatic rollback on failure
- Lock Protection: Advisory locks prevent concurrent migration runs
- Checksum Validation: Detects if applied migrations have been modified
For concurrent deployments:
`typescript
const result = await migrations.upIfNotLocked();
if (result.ran) {
console.log(Applied ${result.count} migrations);
}
`Documentation
Full documentation: jeffry.in/prisma-migrations
- Setup Guide
- CLI Reference
- Monorepo Setup
- Troubleshooting
Development
`bash
bun install
bun run build
bun test
``MIT