Drizzle Kit export 명령어는 다음과 같은 이벤트 시퀀스를 실행합니다:
- Drizzle 스키마 파일을 읽고 스키마의 JSON 스냅샷을 생성합니다
- JSON 차이를 기반으로 SQL DDL 문을 생성합니다
- SQL DDL 문을 콘솔에 출력합니다
drizzle-kit exportdrizzle-kit export는 Drizzle 스키마의 SQL 표현을 내보내고 콘솔에 SQL DDL 표현을 출력합니다.
내부 동작 방식
Drizzle Kit export 명령어는 다음과 같은 이벤트 시퀀스를 실행합니다:
이 명령어는 Drizzle 마이그레이션을 관리하는 코드베이스 우선 접근 방식을 지원하도록 설계되었습니다. Drizzle 스키마의 SQL 표현을 내보내 Atlas와 같은 외부 도구가 모든 마이그레이션을 처리하도록 할 수 있습니다
drizzle-kit export 명령어는 dialect와 schema 경로 옵션을 모두 제공해야 하며,
drizzle.config.ts 설정 파일 또는 CLI 옵션을 통해 설정할 수 있습니다
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "postgresql",
schema: "./src/schema.ts",
});npx drizzle-kit export단일 schema.ts 파일을 사용하거나 프로젝트 전체에 여러 스키마 파일을 분산시킬 수 있습니다.
Drizzle Kit은 schema 설정 옵션을 통해 glob 형식으로 경로를 지정해야 합니다.
📦 <project root>
├ ...
├ 📂 drizzle
├ 📂 src
│ ├ ...
│ ├ 📜 index.ts
│ └ 📜 schema.ts
├ 📜 drizzle.config.ts
└ 📜 package.jsonimport { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./src/schema.ts",
});프로젝트에 여러 설정 파일을 가질 수 있으며, 이는 여러 데이터베이스 단계, 여러 데이터베이스 또는 같은 프로젝트에서 다른 데이터베이스를 사용할 때 매우 유용합니다:
npx drizzle-kit export --config=drizzle-dev.config.ts
npx drizzle-kit export --config=drizzle-prod.config.ts
📦 <project root>
├ 📂 drizzle
├ 📂 src
├ 📜 .env
├ 📜 drizzle-dev.config.ts
├ 📜 drizzle-prod.config.ts
├ 📜 package.json
└ 📜 tsconfig.jsondrizzle-kit export에는 CLI 전용 옵션 목록이 있습니다
--sql | Drizzle 스키마의 SQL 표현 생성 |
기본적으로 Drizzle Kit은 SQL 파일을 출력하지만, 향후 다양한 형식을 지원할 예정입니다
npx drizzle-kit push --name=init
npx drizzle-kit push --name=seed_users --custom
drizzle.config.ts 파일을 통해 drizzle-kit을 설정하는 것을 권장하지만,
필요한 경우(예: CI/CD 파이프라인 등) CLI를 통해 모든 설정 옵션을 제공할 수 있습니다.
dialect | required | 데이터베이스 dialect, postgresql mysql sqlite turso singlestore mssql cockroachdb 중 하나 |
schema | required | TypeScript 스키마 파일 또는 여러 스키마 파일이 있는 폴더의 경로 |
config | 설정 파일 경로, 기본값은 drizzle.config.ts |
./src/schema.ts에 위치한 Drizzle 스키마를 콘솔에 내보내는 방법의 예제입니다
또한 drizzle 설정 파일을 configs 폴더에 배치하겠습니다.
설정 파일을 생성해 보겠습니다:
📦 <project root>
├ 📂 configs
│ └ 📜 drizzle.config.ts
├ 📂 src
│ └ 📜 schema.ts
└ …import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "postgresql",
schema: "./src/schema.ts",
});import { pgTable, serial, text } from 'drizzle-orm/pg-core'
export const users = pgTable('users', {
id: serial('id').primaryKey(),
email: text('email').notNull(),
name: text('name')
});이제 다음을 실행해 보겠습니다
npx drizzle-kit export --config=./configs/drizzle.config.ts그러면 drizzle 스키마의 SQL 표현이 성공적으로 출력됩니다
CREATE TABLE "users" (
"id" serial PRIMARY KEY NOT NULL,
"email" text NOT NULL,
"name" text
);