티스토리 뷰

BACKEND/NODEJS

typeorm migration 적용하기

나를찾는아이 2025. 1. 2. 09:20
728x90
반응형

https://typeorm.io/migrations

 

 

typeorm도 migration 기능을 제공해주고 있습니다

 

migration을 통하여 DB 스키마의 변경내역도 코드를 이용하여 관리할 수 있으며,

 

CI/CD 등에서 자동화된 migration 프로세스를 도입할 수 있습니다

 

typeorm migration:run -- -d path-to-datasource-config

 

migration:run 명령어를 통해 migration 을 실행시킬수 있습니다

 

 

import { MigrationInterface, QueryRunner } from "typeorm"

export class PostRefactoringTIMESTAMP implements MigrationInterface {
    async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(
            `ALTER TABLE "post" RENAME COLUMN "title" TO "name"`,
        )
    }

    async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(
            `ALTER TABLE "post" RENAME COLUMN "name" TO "title"`,
        ) // reverts things made in "up" method
    }
}

 

 

migration 파일은 up과 down의 메서드로 이루어져있습니다

 

up은 migration이 실행될때 실행되며,

 

down은 migration이 롤백(revert) 될때 실행됩니다

 

migration 파일은 js도 가능하고 ts도 가능합니다

 

단 ts를 실행하기 위해서는 ts-node가 필요합니다

 

 

# commonjs
npx typeorm-ts-node-commonjs migration:run -- -d path-to-datasource-config

#esm
npx typeorm-ts-node-esm migration:run -- -d path-to-datasource-config

 

 

typeorm에서 제공하는 commonjs용, esm용 명령어가 있긴한데

 

해당 명령어는 아쉽게도 tsconfig path를 읽지 못함

 

tsconfig의 alias path 등을 활용하시는 분들이라면

 

아래와 같이 명령어를 설정하셔야 합니다

{
    ...
    "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js",
    "migration:create": "pnpm run typeorm migration:create",
    "migration:run": "pnpm run typeorm migration:run -d ./typeorm.config.ts",
    "migration:revert": "pnpm run typeorm migration:revert -d ./typeorm.config.ts",
    "migration:show": "pnpm run typeorm migration:show -d ./typeorm.config.ts",
}

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함