Instalasi Drizzle ORM beserta driver (postgres/mysql2/better-sqlite3), konfigurasi drizzle.config.ts dengan defineConfig, inisialisasi database connection untuk PostgreSQL/SQLite/MySQL, serta menjalankan Drizzle Kit generate, push, dan studio untuk pertama kali.

Setelah di episode 2 kita memahami arsitektur Drizzle ORM — schema, query builder, Drizzle Kit, dan Drizzle Studio — pada episode ini kita melakukan hands-on pertama: install Drizzle ORM, konfigurasi proyek, dan menjalankan Drizzle Kit untuk pertama kali.
Episode ini adalah fondasi praktis: semua episode berikutnya akan menggunakan konfigurasi yang kita bangun di sini.
npm install drizzle-orm
# atau
bun add drizzle-ormPilih driver sesuai database kalian:
npm install postgres # PostgreSQL (recommended)
npm install mysql2 # MySQL
npm install better-sqlite3 # SQLitenpm install -D drizzle-kit# Production
drizzle-orm postgres # atau mysql2 / better-sqlite3
# Development
drizzle-kitHanya 2-3 packages — jauh lebih ringan dibanding Prisma yang membutuhkan prisma + @prisma/client + Rust binary.
Buat file drizzle.config.ts di root proyek:
import { defineConfig } from 'drizzle-kit'
export default defineConfig({
schema: './src/db/schema/*',
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
})| Field | Fungsi |
|---|---|
schema | Path ke file schema TypeScript |
out | Folder output untuk migration files |
dialect | Database dialect: postgresql, mysql, sqlite |
dbCredentials | Koneksi ke database (URL atau object) |
DATABASE_URL=postgresql://user:password@localhost:5432/mydbJangan commit .env ke version control. Gunakan .env.example sebagai template.
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
import * as schema from './schema'
const client = postgres(process.env.DATABASE_URL!)
export const db = drizzle(client, { schema })import { drizzle } from 'drizzle-orm/better-sqlite3'
import Database from 'better-sqlite3'
import * as schema from './schema'
const sqlite = new Database('local.db')
export const db = drizzle(sqlite, { schema })import { drizzle } from 'drizzle-orm/mysql2'
import mysql from 'mysql2'
import * as schema from './schema'
const connection = mysql.createConnection(process.env.DATABASE_URL!)
export const db = drizzle(connection, { schema })npx drizzle-kit generateDrizzle Kit membaca schema TypeScript dan menghasilkan SQL migration file di folder drizzle/:
drizzle/
0000_initial.sql
meta/
_journal.jsonnpx drizzle-kit pushpush menyinkronkan schema langsung ke database tanpa migration file. Cocok untuk development, jangan dipakai di production.
npx drizzle-kit studioDrizzle Studio terbuka di browser — GUI untuk browse, edit, dan filter data.
Tip
Untuk development, gunakan push untuk kemudahan. Untuk production, gunakan generate + migrate agar ada migration file yang bisa di-track di version control dan di-rollback jika perlu.
Pada episode 3 ini, kalian telah menyiapkan Drizzle ORM:
drizzle-orm + driver (postgres/mysql2/better-sqlite3) + drizzle-kit.drizzle.config.ts dengan schema path, dialect, dan db credentials.drizzle() dengan driver yang sesuai (PostgreSQL, SQLite, MySQL).generate (migration), push (sync langsung), studio (GUI).Di episode 4 selanjutnya kita akan mempelajari Schema Definition: Tables & Columns — membuat tabel pertama, tipe data PostgreSQL/MySQL/SQLite, column modifiers, dan foreign key. Sampai jumpa di episode 4!