Show GN: ts6to7 - TypeScript 5/6 → 7(tsgo) 마이그레이션 자동화 codemod
요약
TypeScript 7 출시와 함께 컴파일러 옵션 변경 및 strict 기본값 강화 등으로 인해 기존 프로젝트의 업그레이드가 어려워졌습니다. 이에 개발자가 tsconfig 파일을 자동으로 수정하고, 제거된 옵션을 새로운 TS7 등가물로 변환하는 자동화 codemod(ts6to7)를 공개했습니다.
핵심 포인트
- TS5/6에서 TS7으로의 마이그레이션 과정을 자동화합니다.
- 제거되거나 변경된 컴파일러 옵션을 자동으로 변환해줍니다.
- 모노레포 환경을 지원하며, 수동 확인 필요 항목도 체크리스트로 제공합니다.
어제 TypeScript 7이 정식 릴리스됐습니다. Go로 재작성된 네이티브 컴파일러(tsgo)로 약 10배 빨라졌지만, TS5/6에서 deprecated였던 컴파일러 옵션이 전부 제거됐고 strict 기본값도 true로 바뀌어서 — 오래된 tsconfig를 가진 프로젝트는 업그레이드가 그냥 안 됩니다.
그 기계적인 부분을 자동화하는 codemod를 만들었습니다.
npx ts6to7 --dry # 미리보기 (아무것도 안 씀)
npx ts6to7 # 적용
하는 일:
- tsconfig*.json을 제자리에서 수정 — jsonc-parser로 편집해서 주석과 포맷이 그대로 유지됩니다
- 제거된 옵션을 TS7 등가물로 변환: target: es5 → ES2015, module: umd/amd → ESNext, moduleResolution: node → NodeNext/Bundler, importsNotUsedAsValues → verbatimModuleSyntax 등
- baseUrl은 paths로 폴딩
- typescript 의존성을 ^7.0.0으로 범프
- strict가 미설정이었다면 false로 고정 — extends로 다른 config를 상속하는 파일은 바꾸지 않고 경고만 합니다 (베이스 config가 strict를 이미 설정할 수 있기 때문입니다)
- 안전하게 자동 변환할 수 없는 것들(ES5 전용 런타임, ts-node/ts-jest 같은 구 컴파일러 API 기반 도구, types 배열 누락 등)은 파일 단위로 스코프된 "수동 확인 필요" 체크리스트로 출력
TypeScript 5에서도 바로 이관 가능: 6을 거치지 않아도 됩니다. TS5-era 옵션인 ignoreDeprecations, 프로젝트 레퍼런스의 prepend도 함께 정리합니다.
모노레포도 지원합니다 (모든 패키지 스캔).
현재 0.2.0입니다. tsconfig가 잘못 변환되는 케이스가 있으면 해당 tsconfig를 첨부한 이슈로 알려주시면 큰 도움이 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기