drizzle-kit generate는 여러분의 Drizzle 스키마 선언이나 스키마 변경에 따라 SQL 마이그레이션을 생성할 수 있게 해줍니다.
내부 동작 원리
Drizzle Kit의 generate 커맨드는 다음과 같은 일련의 과정을 거칩니다:
Drizzle 스키마 파일을 읽고 스키마의 JSON 스냅샷을 생성합니다.
이전 마이그레이션 폴더를 읽고 현재 JSON 스냅샷과 가장 최근 스냅샷을 비교합니다.
JSON 차이점을 기반으로 SQL 마이그레이션을 생성합니다.
현재 타임스탬프 아래의 마이그레이션 폴더에 migration.sql과 snapshot.json을 저장합니다.
이 기능은 Drizzle 마이그레이션을 관리하는 코드 우선 접근 방식을 다루기 위해 설계되었습니다.
생성된 마이그레이션은 drizzle-kit migrate를 사용하거나, drizzle-orm의 migrate()를 사용하거나,
bytebase와 같은 외부 마이그레이션 도구를 사용하거나, 직접 데이터베이스에서 실행할 수 있습니다.
drizzle-kit generate 커맨드는 dialect와 schema 경로 옵션을 제공해야 합니다.
이 옵션들은 drizzle.config.ts 설정 파일을 통해 설정하거나 CLI 옵션으로 설정할 수 있습니다.
설정 파일 사용
CLI 옵션 사용
스키마 파일 경로
여러분은 하나의 schema.ts 파일을 사용하거나, 프로젝트 전체에 걸쳐 원하는 만큼 많은 스키마 파일을 분산시킬 수 있습니다. Drizzle Kit은 이러한 스키마 파일의 경로를 glob 형식으로 schema 설정 옵션을 통해 지정하도록 요구합니다.
예제 1
예제 2
예제 3
예제 4
커스텀 마이그레이션 파일 이름 설정하기
--name CLI 옵션을 사용하여 마이그레이션 파일 이름을 커스텀하게 설정할 수 있습니다.
위 명령어를 실행하면 다음과 같은 파일 구조가 생성됩니다.
이렇게 하면 마이그레이션 파일 이름이 0000_init.sql로 지정됩니다.
하나의 프로젝트에 여러 설정 파일 사용하기
프로젝트에서 여러 개의 설정 파일을 가질 수 있습니다. 이는 여러 데이터베이스 단계나 여러 데이터베이스, 또는 동일한 프로젝트 내에서 다른 데이터베이스를 사용할 때 매우 유용합니다.
npm
yarn
pnpm
bun
이 구조를 통해 개발 환경과 프로덕션 환경에 각각 다른 설정 파일을 사용할 수 있습니다. 예를 들어, drizzle-dev.config.ts는 개발용 데이터베이스 설정을, drizzle-prod.config.ts는 프로덕션용 데이터베이스 설정을 담고 있을 수 있습니다. 이렇게 하면 환경에 따라 적절한 설정을 쉽게 적용할 수 있습니다.
커스텀 마이그레이션
Drizzle Kit에서 아직 지원하지 않는 DDL 변경이나 데이터 시딩을 위해, 여러분은 빈 마이그레이션 파일을 생성하여 직접 SQL 마이그레이션을 작성할 수 있습니다. 커스텀 마이그레이션에 대한 자세한 문서는 여기에서 확인할 수 있습니다.
확장 가능한 설정 목록
drizzle-kit generate 명령어는 CLI 전용 옵션을 제공합니다.
custom
커스텀 마이그레이션을 위한 빈 SQL 생성
name
커스텀 이름으로 마이그레이션 생성
npm
yarn
pnpm
bun
drizzle-kit 설정은 drizzle.config.ts 파일을 통해 구성하는 것을 권장합니다. 하지만 CI/CD 파이프라인 등에서 필요할 경우 모든 설정 옵션을 CLI를 통해 제공할 수도 있습니다.
dialect
required
데이터베이스 방언,
위 코드는 frontmatter.dialects 배열에 있는 각 데이터베이스 방언(dialect)을 순회하며 <code> 태그로 감싸고, 각 항목 뒤에 공백을 추가하는 코드입니다. 이렇게 하면 각 방언 이름이 코드 형식으로 표시되고, 항목 사이에 공백이 생깁니다.
중 하나 선택
schema
required
타입스크립트 스키마 파일 또는 여러 스키마 파일이 있는 폴더 경로
out
마이그레이션 출력 폴더, 기본값은 ./drizzle
config
설정 파일 경로, 기본값은 drizzle.config.ts
breakpoints
SQL 문장의 중단점, 기본값은 true
확장 예제
Drizzle 스키마가 ./src/schema.ts에 위치하고, 기본값인 ./drizzle 대신 ./migrations라는 이름의 마이그레이션 폴더를 사용하여 0001_seed-users.sql이라는 커스텀 PostgreSQL 마이그레이션 파일을 만드는 방법을 살펴보겠습니다.