drizzle-kit export

This guide assumes familiarity with:

drizzle-kit export는 Drizzle 스키마의 SQL 표현을 내보내고 콘솔에 SQL DDL 표현을 출력합니다.

내부 동작 방식

Drizzle Kit export 명령어는 다음과 같은 이벤트 시퀀스를 실행합니다:

  1. Drizzle 스키마 파일을 읽고 스키마의 JSON 스냅샷을 생성합니다
  2. JSON 차이를 기반으로 SQL DDL 문을 생성합니다
  3. SQL DDL 문을 콘솔에 출력합니다

이 명령어는 Drizzle 마이그레이션을 관리하는 코드베이스 우선 접근 방식을 지원하도록 설계되었습니다. Drizzle 스키마의 SQL 표현을 내보내 Atlas와 같은 외부 도구가 모든 마이그레이션을 처리하도록 할 수 있습니다

drizzle-kit export 명령어는 dialectschema 경로 옵션을 모두 제공해야 하며, drizzle.config.ts 설정 파일 또는 CLI 옵션을 통해 설정할 수 있습니다

설정 파일 사용
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 형식으로 경로를 지정해야 합니다.

Example 1
Example 2
Example 3
Example 4
📦 <project root>
 ├ ...
 ├ 📂 drizzle
 ├ 📂 src
 │ ├ ...
 │ ├ 📜 index.ts
 │ └ 📜 schema.ts 
 ├ 📜 drizzle.config.ts
 └ 📜 package.json
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  schema: "./src/schema.ts",
});

하나의 프로젝트에 여러 설정 파일 사용

프로젝트에 여러 설정 파일을 가질 수 있으며, 이는 여러 데이터베이스 단계, 여러 데이터베이스 또는 같은 프로젝트에서 다른 데이터베이스를 사용할 때 매우 유용합니다:

npm
yarn
pnpm
bun
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.json

사용 가능한 설정 전체 목록

drizzle-kit export에는 CLI 전용 옵션 목록이 있습니다

--sqlDrizzle 스키마의 SQL 표현 생성

기본적으로 Drizzle Kit은 SQL 파일을 출력하지만, 향후 다양한 형식을 지원할 예정입니다

npm
yarn
pnpm
bun
npx drizzle-kit push --name=init
npx drizzle-kit push --name=seed_users --custom



drizzle.config.ts 파일을 통해 drizzle-kit을 설정하는 것을 권장하지만, 필요한 경우(예: CI/CD 파이프라인 등) CLI를 통해 모든 설정 옵션을 제공할 수 있습니다.

dialectrequired데이터베이스 dialect, postgresql mysql sqlite turso singlestore mssql cockroachdb 중 하나
schemarequiredTypeScript 스키마 파일 또는 여러 스키마 파일이 있는 폴더의 경로
config설정 파일 경로, 기본값은 drizzle.config.ts

예제

./src/schema.ts에 위치한 Drizzle 스키마를 콘솔에 내보내는 방법의 예제입니다

또한 drizzle 설정 파일을 configs 폴더에 배치하겠습니다.

설정 파일을 생성해 보겠습니다:

📦 <project root>
 ├ 📂 configs
 │ └ 📜 drizzle.config.ts
 ├ 📂 src
 │ └ 📜 schema.ts
 └ …
drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "postgresql",
  schema: "./src/schema.ts",
});
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
);