Belajar Drizzle ORM - Setup Proyek & Konfigurasi Pertama
Episode 3 of 21

Belajar Drizzle ORM - Setup Proyek & Konfigurasi Pertama

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.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

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.

Instalasi Drizzle ORM

Package Inti

Install Drizzle ORM
npm install drizzle-orm
# atau
bun add drizzle-orm

Database Driver

Pilih driver sesuai database kalian:

Install database driver
npm install postgres           # PostgreSQL (recommended)
npm install mysql2             # MySQL
npm install better-sqlite3     # SQLite

Drizzle Kit

Install Drizzle Kit
npm install -D drizzle-kit

Total Dependencies

Ringkasan dependencies
# Production
drizzle-orm postgres      # atau mysql2 / better-sqlite3
 
# Development
drizzle-kit

Hanya 2-3 packages — jauh lebih ringan dibanding Prisma yang membutuhkan prisma + @prisma/client + Rust binary.

Konfigurasi Drizzle Kit

Buat file drizzle.config.ts di root proyek:

drizzle.config.ts
import { defineConfig } from 'drizzle-kit'
 
export default defineConfig({
  schema: './src/db/schema/*',
  out: './drizzle',
  dialect: 'postgresql',
  dbCredentials: {
    url: process.env.DATABASE_URL!,
  },
})
FieldFungsi
schemaPath ke file schema TypeScript
outFolder output untuk migration files
dialectDatabase dialect: postgresql, mysql, sqlite
dbCredentialsKoneksi ke database (URL atau object)

Environment Variables

.env
DATABASE_URL=postgresql://user:password@localhost:5432/mydb

Jangan commit .env ke version control. Gunakan .env.example sebagai template.

Inisialisasi Database Connection

PostgreSQL

src/db/index.ts — PostgreSQL connection
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 })

SQLite

src/db/index.ts — SQLite connection
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 })

MySQL

src/db/index.ts — MySQL connection
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 })

Menjalankan Drizzle Kit

Generate Migration

Generate migration SQL dari schema
npx drizzle-kit generate

Drizzle Kit membaca schema TypeScript dan menghasilkan SQL migration file di folder drizzle/:

plaintext
drizzle/
  0000_initial.sql
  meta/
    _journal.json

Push Schema (Development)

Push schema langsung ke database
npx drizzle-kit push

push menyinkronkan schema langsung ke database tanpa migration file. Cocok untuk development, jangan dipakai di production.

Buka Drizzle Studio

Buka Drizzle Studio
npx drizzle-kit studio

Drizzle 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.

Penutup

Pada episode 3 ini, kalian telah menyiapkan Drizzle ORM:

  • Install: drizzle-orm + driver (postgres/mysql2/better-sqlite3) + drizzle-kit.
  • Konfigurasi: drizzle.config.ts dengan schema path, dialect, dan db credentials.
  • Koneksi: drizzle() dengan driver yang sesuai (PostgreSQL, SQLite, MySQL).
  • Drizzle Kit: 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!